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事件都下拉,选择上面这个事件,这样,我们在设计器里面又能看到我们定义的事件罗!
属性:我们做.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事件都下拉,选择上面这个事件,这样,我们在设计器里面又能看到我们定义的事件罗!
相关文章推荐
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之“分页控件”
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- Android开发学习 之 五、基本界面控件
- WinForm界面开发之“分页控件”
- WinForm界面开发之"SplashScreen控件"
- 分享-WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- IOS开发之纯代码界面----基本控件使用篇2
- IOS开发之纯代码界面--基本控件使用篇
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使【转载】
- winform基本控件的使用2(用户登录界面的设计)
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
- IOS开发之纯代码界面----基本控件使用篇4
- WinForm界面开发之"SplashScreen控件"
- Android开发学习 之 五、基本界面控件-1文本控件
- IOS开发之纯代码界面--基本控件使用篇 ┊