8 组件和控件.docx
- 文档编号:9334092
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:10
- 大小:834.40KB
8 组件和控件.docx
《8 组件和控件.docx》由会员分享,可在线阅读,更多相关《8 组件和控件.docx(10页珍藏版)》请在冰点文库上搜索。
8组件和控件
练习2:
自定义组件
新建一个ClassLibrary工程
添加Component
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Diagnostics;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceMyComponent
{
publicpartialclassMyComponent:
Component
{
privatestringmessage;
publicstringMessgae
{
get
{returnmessage;}
set
{message=value;}
}
publicvoidShowMessage()
{
MessageBox.Show(message);
}
publicMyComponent()
{
InitializeComponent();
}
publicMyComponent(IContainercontainer)
{
container.Add(this);
InitializeComponent();
}
}
}
新建一个WinowsForm的测试工程。
编译工程之后,Toolbox的上方将出现“MyComponent”。
将其拖到“Form1”上松开,“Form1”的下方会出现“MyComponent”的一个实例:
myComponent1。
可以查看myComponent1的属性,我们给它添加的属性“Message”将出现在其中。
试着向其中输入一串字符。
在“Form1”上添加一个按钮,并加入如下点击事件的处理代码:
privatevoidbutton1_Click(objectsender,EventArgse)
{
myComponent1.ShowMessage();
}
运行程序,点击按钮!
属性窗口是可以分类的,属性“Message”被分到“Misc”。
如果想把它放到其它类,比如“Message”类该如何实现呢?
简单,只要在属性上发加,如下一条语句就行!
[Category("Message")]
publicstringMessgae
{
get
{
returnmessage;
}
set
{
message=value;
}
}
看看结果。
我们还可以为组件加上事件。
这里暂不介绍。
练习3:
自定义控件
可以通过一下两种方式,在一个工程中添加UserControl(自定义控件)。
方法
(1)
方法
(2)
可以向自定义控件(UserControl1)上拖入想要的控件。
试试制作一个只允许输入的数字的“TextBox”。
publicpartialclassUserControl1:
UserControl
{
privatestringoldString;
publicUserControl1()
{
InitializeComponent();
}
privatevoidtextBox1_TextChanged(objectsender,EventArgse)
{
stringinput=this.textBox1.Text;
intresult;
if(!
Int32.TryParse(input,outresult))
{
MessageBox.Show("请输入数字");
this.textBox1.Text=oldString;
}
else
{oldString=input;}
}
}
另一种简便的实现方法。
新建一个类库,命名为MyControl。
定义一个类:
NumberTextBox,使其继承TextBox。
publicclassNumberTextBox:
TextBox
{
protectedoverridevoidWndProc(refMessagem)
{
if((m.Msg==0x0102&&!
Char.IsControl((char)m.WParam)))
{
if(char.IsNumber((char)m.WParam))
base.WndProc(refm);
return;
}
base.WndProc(refm);
}
}
测试一下!
新建一个WindowsForm工程
将MyControl.dll拖入Toolbox下方的空白区。
NumberTextBox将出现在Toolbox中。
将NumberTextBox拖到Form1中。
注意NumberTextBox的命名空间也自动加入到工程的引用(References)中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 组件和控件 组件 控件