C#中用户控件与窗体间的消息传递

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C#中用户控件与窗体间的消息传递

如果在c#中实现用户定义控件内的事件挂勾到调用的窗体事件中

我们都知道在开发中,如果使用用户定义控件可以有效的进行程序的模块化。其实在.net 的winform中也是可以使用的。

细节如下:

1、新建应用程序windowsapplication1。

2、添加新的用户控件userlogin。(如图user)

3、定义用户属性

//定义属性

public string username

{

get{return username;}

set{username=value;}

}

public string password

{

get{return password;}

set{password=value;}

}

4、定义委托

//定义委托

public delegate void btnokclickeventhander(object sender,eventargs e);

public delegate void btncancelclickeventhander(object sender,eventargs e);

5、定义事件

//定义事件

public event btnokclickeventhander btnokclick;

public event btncancelclickeventhander btncancelclick

6、事件实现

private void textboxuid_textchanged(object sender, system.eventargs e)

{

username=this.textboxuid.text;

}

private void textboxpwd_textchanged(object sender, system.eventargs e)

{

password=this.textboxpwd.text;

}

private void buttonok_click(object sender, system.eventargs e)

{

if (btnokclick!=null)

btnokclick(this,e);

}

private void buttoncancel_click(object sender, system.eventargs e)

{

if (btncancelclick!=null)

btncancelclick(this,e);

}

7、在form1的winform中实现对用户控件事件的调用,消息的接收。

protected void okclick(object send,system.eventargs e)

{

messagebox.show("uid:"+ername+";pwd:"+userlogin1.password,"userme ssage");

}

protected void cancelclick(object send,system.eventargs e)

{

this.close();

}

8.按f5运行(如图result)

附1(windowsapplication1源代码)

using system;

using system.drawing;

using system.collections;

using ponentmodel;

using system.windows.forms;

using system.data;

namespace windowsapplication1

{

///

/// form1 的摘要说明。

///

public class form1 : system.windows.forms.form

{

private system.windows.forms.panel panel1;

private erlogin userlogin1;

///

/// 必需的设计器变量。

///

private ponentmodel.container components = null;

public form1()

{

//

// windows 窗体设计器支持所必需的

//

initializecomponent();

userlogin1.btnokclick+=new btnokclickeventhander(okclick);

userlogin1.btncancelclick+=new btncancelclickeventhander(cancelclick); //

// todo: 在initializecomponent 调用后添加任何构造函数代码

//

}

///

/// 清理所有正在使用的资源。

///

protected override void dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.dispose();

}

}

base.dispose( disposing );

}

#region windows 窗体设计器生成的代码

///

/// 设计器支持所需的方法- 不要使用代码编辑器修改

/// 此方法的内容。

///

private void initializecomponent()

{

this.panel1 = new system.windows.forms.panel();

erlogin1 = new erlogin();

this.panel1.suspendlayout();

this.suspendlayout();

//

// panel1

//

this.panel1.controls.add(erlogin1);

this.panel1.dock = system.windows.forms.dockstyle.fill;

this.panel1.location = new system.drawing.point(0, 0);

= "panel1";

this.panel1.size = new system.drawing.size(216, 101);

this.panel1.tabindex = 1;

//

// userlogin1

相关文档
最新文档