博文

动手扩充FreeTextBox的功能(2006-05-11 15:42:00)

摘要:摘要:最近一个项目要求可以在发表文章的时候能发布电影,当然不可能叫用户去写HTML代码了,于是决定扩充FreeTextBox的功能,即为它增加一个工具栏按钮,实现发布在线电影的功能。 -------------------------------------------------------------------------------- FreeTextBox是.Net环境下广为流行的RichText编辑器,CSDN的blog在发表文章时就是使用的它。 最近一个项目要求可以在发表文章的时候能发布电影,当然不可能叫用户去写HTML代码了, 于是决定扩充FreeTextBox的功能,即为它增加一个工具栏按钮,实现发布在线电影的功能。 没有看相关的文章,直接打开FreeTextBox的源代码工程,发现工程结构组织还是比较好, 源代码也有注释,注意到ToolbarControls目录下面有ToolbarItem.cs、ToolbarItems.cs和 ToolbarButton.cs ,肯定是在这里了。粗看了一下代码, 发现在ToolbarItems.cs有很多静态属性,分别返回很多ToolbarButton。 其中有很熟悉的: /// /// Returns a ToolbarButton with InsertImageFromGallery JavaScript functions builtin /// public static ToolbarButton InsertImageFromGallery { get { ToolbarButton button = new ToolbarButton("插入图片(来自图片库)","insertimagefromgallery","FTB_InsertImageFromGallery_CLIENTID"); button.ScriptBlock = @" function FTB_InsertImageFromGallery_CLIENTID(editor,htmlmode) { if (htmlmode) return; editor.focus(); obj = FTB_GetRangeReference(editor); if (obj.tagName == ’IMG’) { ......

阅读全文(2638) | 评论:0

app.config修改操作(2006-05-11 15:34:00)

摘要:using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Reflection;
using System.IO;
namespace SMRouterSender
{
    public class ClassConfigurationSettings
    {         /// <summary>
        /// 修改配置文件(数据库连接字符串)
        /// </summary>
        /// <param name="connString"></param>
        public static void UpdateConfig( string SMSenderDBIP, string SMSenderSaUserName, string SMSenderSaPassword)
        {
            try
            {
                str......

阅读全文(5354) | 评论:0

Asp.Net获取本地计算机和其他计算机的MAC值的方法(2006-05-11 15:33:00)

摘要:Public Function ValueSepR(ByVal RawString As String, ByVal SepChar As String) As String
        If InStr(1, RawString, SepChar) <> 0 Then
            ValueSepR = Microsoft.VisualBasic.Right(RawString,Len(RawString) - InStr(1, RawString, SepChar))
        Else
            ValueSepR = RawString
        End If
End Function
Public Function GetMac(ByVal IP As String) As String
        Try
            Dim dirResults As String
  &nb......

阅读全文(2476) | 评论:0

全选与取消(2006-04-01 09:39:00)

摘要:<script type="text/javascript">
 <!--
 function CheckAll(flag)
 {
  f1=document.form3;
  for (var i=0;i<f1.elements.length;i++)
  {
  var e = f1.elements[i];
  if (flag==1)
   e.checked = true;
  else if (flag==0)
   e.checked = false;
  }
 }
 //-->
 </script>......

阅读全文(2418) | 评论:0

客户端实现级联全选(2006-04-01 09:30:00)

摘要:<script language="JavaScript">
<!--
function display( dis, hid ){
 document.getElementById(hid).style.display="none";
 document.getElementById(dis).style.display="";
}
function checkintst(str,check){
    if(str == null || str == '') return;
    var aIndex = str.split(',');
    for(i=0;i < aIndex.length;i++)
    {
        var node = document.getElementById('interest'+aIndex[i]);
        node.checked = check;
    }
}
var types = [[true,'1,2,3,4,5,6,7'],
 [true,'8,9,10,11,12'],
 [true,'19,20,21,22,37'],
 [true,'13,14,15,16,17,18'],
 [true,'23,24,25,26,27'],
 [true,'28,29,30,31'],
 [true,'32,33,34,35,36']
];
function checktype( index ){
 checkintst( types[index][1],types[index][0] );
 types[index][0] = types[inde......

阅读全文(3125) | 评论:0

字体颜色间时变色代码(2006-03-29 16:51:00)

摘要:<td align="center" bgcolor="#F9F9F9">
<script>var message="法律声明:本站只提供信息交流平台,各交易者自己审辨真假,如有损失,本站概不负责。"
var n=0;
if (document.all){
document.write('<font size="12px" color="red">')
for (m=0;m<message.length;m++)
document.write('<span id="neonlight" style="font-size:12px">'+message.charAt(m)+'</span>')
document.write('</font>')
var tempref=document.all.neonlight
}
else
document.write(message)
function neon(){
if (n==0){
for (m=0;m<message.length;m++)
tempref[m].style.color="#000000"
}
tempref[n].style.color="RED"
if (n<tempref.length-1)
n++
else{
n=0
clearInterval(flashing)
setTimeout("beginneon()",1000)
return
}
}
function beginneon(){
if (document.all)
flashing=setInterval("neon()",50)
}
beginneon()
</script></td>......

阅读全文(3971) | 评论:2

日历表代码(2006-02-28 15:47:00)

摘要:<h3>公告</h3>
Welcome To My Blog!<br><br>
QQ:149906878<br>
<br><br>
<EMBED SRC=http://lizi50.dnsmy.com/shizhongku/clock105.swf WIDTH=180 HEIGHT=160 wmode=transparent quality=high loop=true menu=false>
<br><br>
<!-- Blog日历表开始 -->
<script language="javascript">
var diarydays="<2004-08-05><2004-08-09><2004-08-12><2004-08-17><2004-08-19><2004-07-14><2004-07-13><2004-07-08><2004-07-05><2004-07-04><2004-07-03><2004-06-27><2004-06-26><2004-06-25>";
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
.calendarBigBorder { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; text-decoration: none; width: 170; background-color: #FFFFFF; font-size: 9pt;border:1px dotted #999; }
.calendarTd { font-family: "Arial", "Helvetica", "sans-serif", "宋体"; font-siz......

阅读全文(7098) | 评论:1

在C#中运用API函数编写多功能关机程序(2006-02-27 17:13:00)

摘要:熟悉windows的用户对操作系统的关机程序一定了解,您是不是觉得它的功能不是很多。许多软件都有自动关机功能,比如一些下载软件,这一功能能让您半夜踏踏实实地睡个好觉,而电脑却能按照您事先的设定自动关闭 , 您在使用电脑听音乐、看电影、或是下载等一些自动功能的时候,是不是经常为忘记关机而心痛不已。现在我们用visual C#来编写一个多功能的关机程序。该程序具有:定时关机、倒计时关机、关机提醒、系统信息获取等四项功能, 可设定关机时间精确到秒。并且让你很快掌握Visual C#中对API的操作程序。编写过程如下: 一、设计关闭Windows窗体 1.界面的设计 新建一个标准工程,向工程中增加一个Windows窗体并向窗体中添加如下控件,并分别设置其属性: 控件名 类别 Text 控件名 类别 Text CheckBox1 CheckBox 自动关机 GroupBox1 GroupBox 当前系统时间 CheckBox1 CheckBox 倒计时执行操作 GroupBox2 GroupBox 设定时间 CheckBox1 CheckBox 定时报警 TxtTime TextBox   ButCancle Button 取消 SetupTime DateTimePicker   ButReOpen Button 重新启动 SetupDate DateTimePicker   ButClose Button 关机 Timer1 Timer 100 ButSysInto Button 系统信息 ButReLogin ......

阅读全文(3028) | 评论:3

深入剖析C#继承机制(2006-02-27 17:07:00)

摘要:2) 隐藏基类成员

  想想看,如果所有的类都可以被继承,继承的滥用会带来什么后果?类的层次结构体系将变得十分庞,大类之间的关系杂乱无章,对类的理解和使用都会变得十分困难。有时候,我们并不希望自己编写的类被继承。另一些时候,有的类已经没有再被继承的必要。C#提出了一个密封类(sealed class)的概念,帮助开发人员来解决这一问题。

  密封类在声明中使用sealed 修饰符,这样就可以防止该类被其它类继承。如果试图将一个密封类作为其它类的基类,C#将提示出错。理所当然,密封类不能同时又是抽象类,因为抽象总是希望被继承的。

  在哪些场合下使用密封类呢?密封类可以阻止其它程序员在无意中继承该类。而且密封类可以起到运行时优化的效果。实际上,密封类中不可能有派生类。如果密封类实例中存在虚成员函数,该成员函数可以转化为非虚的,函数修饰符virtual 不再生效。

  让我们看下面的例子:
bstract class A
{
public abstract void F( ) ;
}
sealed class B: A
{
public override void F( )
{ // F 的具体实现代码 }
}   如果我们尝试写下面的代码

class C: B{ }

  C#会指出这个错误,告诉你B 是一个密封类,不能试图从B 中派生任何类。

  (3) 密封方法

  我们已经知道,使用密封类可以防止对类的继承。C#还提出了密封方法(sealedmethod) 的概念,以防止在方法所在类的派生类中对该方法的重载。对方法可以使用sealed 修饰符,这时我们称该方法是一个密封方法。

  不是类的每个成员方法都可以作为密封方法密封方法,必须对基类的虚方法进行重载,提供具体的实现方法。所以,在方法的声明中,sealed 修饰符总是和override 修饰符同时使用。请看下面的例子代码:
using System ;
class A
{
public virtual void F( )
{ Console.WriteLi......

阅读全文(1974) | 评论:0

C#与倒计时(2006-02-27 16:59:00)

摘要:<form  name="form1">
<div  align="center"  align="middle">
<center>离2010年还有:<br>
<input  type="textarea"  name="left"  size="35"  style="text-align:  center">
</center>
</div>
</form>
<script  LANGUAGE="javascript">
startclock()
var  timerID  =  null;
var  timerRunning  =  false;
function  showtime()  {
Today  =  new  Date();
var  NowHour  =  Today.getHours();
var  NowMinute  =  Today.getMinutes();
var  NowMonth  =  Today.getMonth();
var  NowDate  =  Today.getDate();
var  NowYear  =  Today.getYear();
var  NowSecond  =  Today.getSeconds();
if  (NowYear  <2000)
NowYear=1900+NowYear;
Today  =  null;
Hourleft  =  23  -  NowHour
Minuteleft&n......

阅读全文(5025) | 评论:0