用途
用户控件相当于带界面的类模块,并可以编译成dll。具有以下优点:
1.可以把程序分离成内核部分和引用部分,便于开发和维护;
2.可以多进程调用;
3.安全性好。
例子
1.新建一个“Windows控件库”的项目;
2.编写控件程序,如需要传递参数,定义如下:
public PointF p1,p2;
3.在【生成】中生成dll;
4.用【文件】/【添加项目】/【新建项目】,新建一个使用控件项目,为“Windows应用程序”;
5.用【项目】/【添加引用】/【项目】,引用控件项目;
6.在【工具箱】/【我的用户控件】中选择生成的控件;
7.把使用项目设置为启动;
8.编写程序。如果传递参数,用:
private void Form1_Load(object sender, Sy e)
{
u PointF(20,20);
u PointF(100,200);
}
然后可以在这个解决方案中随意修改控件设计,只要运行调用程序,就可以自动编译和加载控件了。如果修改了控件的界面,还需要重新生成和加载。
如果在单独的使用程序中调用这个dll控件,则先需要添加引用,然后需要在“工具箱”上点击右键,选择【添加/移除项】,把这个控件添加到工具箱上,才可以添加到form上。
在使用程序中可以随意调用控件中的方法。如果要在控件中调用使用程序中的方法,则可以使用一个传递参数,如 int bi,每次点击事件时bi值改变。然后在使用程序中用一个timer控件,用事件timer1_Tick来监控bi的变化,来触发一个方法。
inputBox方法
类定义
public class InputBox : Sy
{
private Sy txtData;
private Sy lblInfo;
private Sy components = null;
private InputBox()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
com();
}
}
ba( disposing );
}
private void InitializeComponent()
{
= new Sy();
= new Sy();
();
// txtData
.Font = new Sy("宋体", 10.5F, SyStyle.Regular, Sy, )(134)));
.Location = new Sy(19, 8);
.Name = "txtData";
.Size = new Sy(317, 23);
.TabIndex = 0;
.Text = "";
.KeyDown += new Sy(_KeyDown);
// lblInfo
.Font = new Sy("宋体", 9F, SyStyle.Regular, Sy, )(134)));
.Location = new Sy(19, 32);
.Name = "lblInfo";
.Size = new Sy(317, 16);
.TabIndex = 1;
.Text = "按[Enter]键确认,按[Esc]键取消";
// InputBox
= new Sy(6, 14);
= new Sy(350, 48);
= false;
();
();
= SyBorderStyle.FixedDialog;
= "InputBox";
= "InputBox";
(false);
}
//对键盘进行响应
private void txtData_KeyDown(object sender, Sy e)
{
i == Keys.Enter)
{
();
}
else if == Keys.Escape )
{
= ;
();
}
}
//显示InputBox
public static string ShowInputBox(string Title,string keyInfo)
{
InputBox inputbox = new InputBox();
in =Title;
if () != )
in =keyInfo;
in();
return inputbox.;
}
}
普通调用
private void button1_Click(object sender, Sy e)
{
string inMsg = In("输入信息", );
//对用户的输入信息进行检查
if () != )
{
Me(inMsg);
}
else
{
Me("输入为空!");
}
如果需要输入一个int数值,则程序如下:
string inMsg = In("输入信息", );
int a1;
if () != )
{
try
{
a1=Convert.ToInt32());
Me());
}
catch (Exception)
{
Me("输入错误!继续保持原有数据。");
}
}
else
{
Me("输入为空!");
}
增加缺省值
在类中增加以下程序:
public static string ShowInputBox(string Title,string keyInfo,string textInfo)
{
InputBox inputbox = new InputBox();
in =Title;
inputbox.=textInfo;
if () != )
in =keyInfo;
in();
return inputbox.;
}
可以在调用时输入textBox中的缺省值。
版本设置
在文件A中修改
[assembly: AssemblyVersion("2.1.1.*")]
则在最后生成的EXE文件中显示版本号2.2.1.10202,最后一个号码随着每次编辑修改后递增。