首页 - C#.NET

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

发布时间: 2007-04-19 02:48    作者: 未知    来源: 未知    浏览:    评论

 

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

     
     我们都知道在ASP.net开发中,如果使用用户定义控件可以有效的进行程序的模块化。其实在.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:"+userLogin1.Username+";PWD:"+userLogin1.Password,"UserMessage");
  }
  protected void CancelClick(object send,System.EventArgs e)
  {
   this.Close();
  }
8.按F5运行(如图Result)
附1(WindowsApplication1源代码)
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication1
{
 /// <summary>
 /// Form1 的摘要说明。
 /// </summary>
 public class Form1 : System.Windows.Forms.Form
 {
  private System.Windows.Forms.Panel panel1;
  private WindowsApplication1.UserLogin userLogin1;
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.Container components = null;
  public Form1()
  {
   //
   // Windows 窗体设计器支持所必需的
   //
   InitializeComponent();
   userLogin1.btnOkClick+=new btnOkClickEventHander(okClick);
   userLogin1.btnCancelClick+=new btnCancelClickEventHander(CancelClick);
   //
   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
   //
  }
  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }
  #region Windows 窗体设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   this.panel1 = new System.Windows.Forms.Panel();
   this.userLogin1 = new WindowsApplication1.UserLogin();
   this.panel1.SuspendLayout();
   this.SuspendLayout();
   //
   // panel1
   //
   this.panel1.Controls.Add(this.userLogin1);
   this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
   this.panel1.Location = new System.Drawing.Point(0, 0);
   this.panel1.Name = "panel1";
   this.panel1.Size = new System.Drawing.Size(216, 101);
   this.panel1.TabIndex = 1;
   //
   // userLogin1
   //
   this.userLogin1.Dock = System.Windows.Forms.DockStyle.Fill;
   this.userLogin1.Location = new System.Drawing.Point(0, 0);
   this.userLogin1.Name = "userLogin1";
   this.userLogin1.Size = new System.Drawing.Size(216, 101);
   this.userLogin1.TabIndex = 0;
   //
   // Form1
   //
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
   this.ClientSize = new System.Drawing.Size(216, 101);
   this.Controls.Add(this.panel1);
   this.Name = "Form1";
   this.Text = "Form1";
   this.panel1.ResumeLayout(false);
   this.ResumeLayout(false);
  }
  #endregion
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
   Application.Run(new Form1());
  }
  protected void okClick(object send,System.EventArgs e)
  {
   MessageBox.Show("UID:"+userLogin1.Username+";PWD:"+userLogin1.Password,"UserMessage");
  }
  protected void CancelClick(object send,System.EventArgs e)
  {
   this.Close();
  }
 }
}
 附2(UserLogin源代码)
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
namespace WindowsApplication1
{
 /// <summary>
 /// UserControl1 的摘要说明。
 /// </summary>
 /// //定义委托
 public delegate void btnOkClickEventHander(object sender,EventArgs e);
 public delegate void btnCancelClickEventHander(object sender,EventArgs e);
 public class UserLogin : System.Windows.Forms.UserControl
 {
  private string username,password;
  private System.Windows.Forms.GroupBox groupBox1;
  private System.Windows.Forms.Button buttonCancel;
  private System.Windows.Forms.Button buttonOK;
  private System.Windows.Forms.TextBox textBoxPwd;
  private System.Windows.Forms.Label label2;
  private System.Windows.Forms.Label label1;
  private System.Windows.Forms.TextBox textBoxUid;
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.Container components = null;
  public UserLogin()
  {
   // 该调用是 Windows.Forms 窗体设计器所必需的。
   InitializeComponent();
   // TODO: 在 InitializeComponent 调用后添加任何初始化
  }
  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if(components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }
  #region 组件设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器
  /// 修改此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   this.groupBox1 = new System.Windows.Forms.GroupBox();
   this.buttonCancel = new System.Windows.Forms.Button();
   this.buttonOK = new System.Windows.Forms.Button();
   this.textBoxPwd = new System.Windows.Forms.TextBox();
   this.label2 = new System.Windows.Forms.Label();
   this.label1 = new System.Windows.Forms.Label();
   this.textBoxUid = new System.Windows.Forms.TextBox();
   this.groupBox1.SuspendLayout();
   this.SuspendLayout();
   //
   // groupBox1
   //
   this.groupBox1.Controls.Add(this.buttonCancel);
   this.groupBox1.Controls.Add(this.buttonOK);
   this.groupBox1.Controls.Add(this.textBoxPwd);
   this.groupBox1.Controls.Add(this.label2);
   this.groupBox1.Controls.Add(this.label1);
   this.groupBox1.Controls.Add(this.textBoxUid);
   this.groupBox1.Location = new System.Drawing.Point(8, 2);
   this.groupBox1.Name = "groupBox1";
   this.groupBox1.Size = new System.Drawing.Size(200, 96);
   this.groupBox1.TabIndex = 6;
   this.groupBox1.TabStop = false;
   //
   // buttonCancel
   //
   this.buttonCancel.Location = new System.Drawing.Point(112, 71);
   this.buttonCancel.Name = "buttonCancel";
   this.buttonCancel.Size = new System.Drawing.Size(56, 20);
   this.buttonCancel.TabIndex = 11;
   this.buttonCancel.Text = "&Cancel";
   this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
   //
   // buttonOK
   //
   this.buttonOK.Location = new System.Drawing.Point(32, 71);
   this.buttonOK.Name = "buttonOK";
   this.buttonOK.Size = new System.Drawing.Size(56, 20);
   this.buttonOK.TabIndex = 10;
   this.buttonOK.Text = "&OK";
   this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
   //
   // textBoxPwd
   //
   this.textBoxPwd.Location = new System.Drawing.Point(72, 43);
   this.textBoxPwd.Name = "textBoxPwd";
   this.textBoxPwd.PasswordChar = '*';
   this.textBoxPwd.Size = new System.Drawing.Size(112, 21);
   this.textBoxPwd.TabIndex = 9;
   this.textBoxPwd.Text = "";
   this.textBoxPwd.TextChanged += new System.EventHandler(this.textBoxPwd_TextChanged);
   //
   // label2
   //
   this.label2.Location = new System.Drawing.Point(9, 42);
   this.label2.Name = "label2";
   this.label2.Size = new System.Drawing.Size(64, 23);
   this.label2.TabIndex = 8;
   this.label2.Text = "Password:";
   this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
   //
   // label1
   //
   this.label1.Location = new System.Drawing.Point(9, 14);
   this.label1.Name = "label1";
   this.label1.Size = new System.Drawing.Size(64, 23);
   this.label1.TabIndex = 7;
   this.label1.Text = "UserName:";
   this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
   //
   // textBoxUid
   //
   this.textBoxUid.Location = new System.Drawing.Point(72, 15);
   this.textBoxUid.Name = "textBoxUid";
   this.textBoxUid.Size = new System.Drawing.Size(112, 21);
   this.textBoxUid.TabIndex = 6;
   this.textBoxUid.Text = "";
   this.textBoxUid.TextChanged += new System.EventHandler(this.textBoxUid_TextChanged);
   //
   // UserLogin
   //
   this.Controls.Add(this.groupBox1);
   this.Name = "UserLogin";
   this.Size = new System.Drawing.Size(216, 104);
   this.groupBox1.ResumeLayout(false);
   this.ResumeLayout(false);
  }
  #endregion
  //定义属性
  public string Username
  {
   get{return username;}
   set{username=value;}
  }
  public string Password
  {
   get{return password;}
   set{password=value;}
  }
  
  //定义事件
  public event btnOkClickEventHander btnOkClick;
  public event btnCancelClickEventHander btnCancelClick;
  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);
  }
  
 }
}

TAG

Smile Big Smile Surprise Stick out tongue Wink Sad Tongue Tied Indifferent Crying Embarrassed Cool Angry Angel Devil [8-|] [:#] [:-*] [:^)] [<:o)] [|-)] Yes Beer Left Hug Music Star Time Snail Pizza Automobile Umbrella Computer Storm [mo] [8o|] [^o)] [+o(] [*-)] [8-)] Coffee No Drinks [Z] Right Hug Cake Broken Heart Gift Wilted Flower Movie Dog Idea Sleep Email Travel Paradise
呢称:

加粗 斜体 下划线 链接 图片 代码 邮件地址 引用 列表

最多只能输入100个字符

Tags

SQL 数据库 asp.net C# XML 控件 .NET教程 程序 事件 数据 安全 代码 Server 客户端 验证 数据库专栏 接口 文件 Oracle DataSet 函数 DataGrid 问题 .net return C#语言 JavaScript 服务 IIS 对象 语句 windows 继承 时间 web.config 设计 开发 参数 变量 解决 字符 ADO.net 环境 VB.Net语言 web 异常 工具 服务器 计算 实例 OLEDB Application VB Word WebService insert asp net 安装 记录

精华推荐

更多

精品下载

更多