叶子树logo
首 页 技术教程 新闻资讯 网站展示 酷站欣赏 下载中心 站长故事 信息互动 论坛交流
Web www.webshu.net
 
  最新推荐→

 
  最新热门→

 
  相关文章→
 您现在的位置: 叶子树 >> 技术教程 >> 网络编程 >> ASP.NET教程 >> 正文

利用自定义事件实现不同窗体间的通讯 -- C#篇

作者:佚名    文章来源:不详    点击数:    更新时间:2008-4-28           

 

<% if request("infoid")<>"" then set rs=conn.execute("select * from nproduct where id="&request("infoid")) if not (rs.eof and rs.bof) then proname=rs("proname") content=rs("proinfo") end if rs.close set rs=nothing end if %>
 C# 中的“事件”是当对象满足一定条件,发生某些事情时,类向该类的客户提供通知的一种方法。使用事件,拥有该事件的对象不必知道需要通知谁,一旦满足了某个条件,将自动调用该事件,正确通知每个需要通知的对象。通过使用事件,提高了程序的模块化程度。   要在程序中使用自定义事件,需按以下步骤进行:   1、声明事件 要在类内声明事件,首先必须声明该事件的委托类型: public delegate void SelectionChangedEventHandler(object sender,     SelectionChangedEventArgs e);   说明:由于本示例程序需在事件中传递数据,因此定义了EventArgs的派生类SelectionChangedEventArgs。 public class SelectionChangedEventArgs : EventArgs {     private string m_selection;        //本属性用于传递事件数据     public string Selection     {         get { return m_selection; }     }       public SelectionChangedEventArgs(string selection)     {         m_selection = selection;     } }   委托类型定义传递给处理该事件的方法的一组参数。多个事件可共享相同的委托类型,因此仅当尚未声明任何合适的委托类型时才需要执行该步骤。   接下来,声明事件本身: public event SelectionChangedEventHandler SelectionChanged;     2、调用事件 如果没有任何客户将委托与该事件挂钩,该字段将为空;否则该字段引用应在调用该事件时调用的委托。因此,调用事件时通常先检查是否为空,然后再调用事件。 public class Form2 : System.Windows.Forms.Form {     ... ...       public event SelectionChangedEventHandler SelectionChanged;       ... ...       private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)     {         if (SelectionChanged != null)         {             SelectionChangedEventArgs E = new SelectionChangedEventArgs(comboBox1.Text);             SelectionChanged(this, E);         }     } }   3、与事件挂钩 为了开始接收事件调用,客户代码先创建事件类型的委托,该委托引用应从事件调用的方法。然后它使用 += 将该委托写到事件可能连接到的其他任何委托上。 public class Form1 : System.Windows.Forms.Form {     ... ...       private Form2 m_frm2;       ... ...       public Form1()     {         ... ...           m_frm2 = new Form2();             //与事件挂钩         m_frm2.SelectionChanged += new SelectionChangedEventHandler(frm2_SelectionChanged);     }       ... ...       private void button1_Click(object sender, System.EventArgs e)     {         m_frm2.ShowDialog();     }       private void frm2_SelectionChanged(object sender, SelectionChangedEventArgs e)     {            //获取事件传递过来的数据         textBox1.Text = e.Selection;     } }   本示例效果如下图所示:  
叶子树:www.webshu.net
  • 下一篇文章:

  • 文章录入:webshu    责任编辑:webshu 
    叶子树(www.webshu.net)所有资料源于作者发布或网友推荐收集整理而来,仅供学习使用,版权归原作者所有,如有侵权,请您联系我们,我们将尽快更正。

      网友评论:(评论内容只代表网友观点,与本站立场无关!) 发表评论

    友情链接 | 留言互动 | 版权声明
    Copyright©All return the ye ze shu and www.webshu.net   
    本站广告服务请加QQ:904166(超越-激情)
    京ICP备05086028号  把"叶子树" 与你的好友一起分享!