您的位置:首页 > 其它

WinForm界面开发论(一)控件基本论

2007-07-09 22:45 417 查看
用.net开发windows程序,离不开控件的编写,微软的那堆控件里面,只提供了一些比较基本和典型的界面控件,对于现在五彩缤纷的软件,默认的控件集已很难满足用户的需求。既然是这样,让我们自己动手来创造自己的控件吧!

属性:我们做.net开发的,通常都会用鼠标在属性框里面设计控件,所以,一般你看到拼命敲键盘的,不要以为看到了代码超人,转过去看清楚点,在Q着呢!.net的设计器很好,所以不要什么都写在代码里面,最重要要做到设计器可视化!

- 我们首先建立一个WindowApplication,在建一个WindowsControlLibrary,一般控件和窗口最好分开,目的当然是为了以后的可重用性了。

- 这里我们以一个MyButton控件为例子,在WindowsControlLibrary里面建立一个叫MyButton的UserControl,上面放一个PictrueBox,再放一个Lable,如下图:





- 我们假设要做一个属性,用来设置下面文字的文本和颜色,代码如下:


[Description("按钮的文本显示")]


public string MyButtonText




...{


set




...{


this.label1.Text = value;


}


get




...{


return this.label1.Text;


}


}

上面[Description("按钮的文本显示")]声明了该属性的作用,能在设计器属性框下面的说明里面看到,再看看设置文本颜色的代码:


[Description("按钮的文本颜色")]


public Color MyButtonTextColor




...{


set




...{


this.label1.ForeColor = value;


}


get




...{


return this.label1.ForeColor;


}


}

我们用了Color类,那么,在属性框里面,能够使用和其它控件选择颜色时一样的选择窗口,非常方便吧!如果你觉得不够,或者类型是你自己定义的,那么还可以直接写一个设置窗口,后面我将会深入讲解!我们做完这些后,效果如下:

事件:事件是C#一个很重要的概念,因为他是完全面向对象的开发语言,所以在需要对象之间的调用和回调的各种方式,而事件就是最常见的回调机制了。下面,我们为这个控件写一个例子MouseOver的事件,当鼠标放在该控件时发生。


public delegate void dMouseOver(System.DateTime mouseOverTime);


public event dMouseOver MouseOver;




private bool MouseOverIsSend = false;




private void MyButton_MouseEnter(object sender, EventArgs e)




...{


if (MouseOver != null)




...{


if (!MouseOverIsSend)




...{


this.MouseOver(DateTime.Now);


this.MouseOverIsSend = true;


}


}


}




private void MyButton_MouseLeave(object sender, EventArgs e)




...{


MouseOverIsSend = false;


}

把label的MouseEnter和PictureBox的MouseEnter事件都下拉,选择上面这个事件,这样,我们在设计器里面又能看到我们定义的事件罗!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: