conan

导航

利用事件委托来实现UserControls之间的交互

在from1.aspx页上加入2个用户控件,名为test1.ascx和test2.ascx。

在test1.ascx中加入一个文本框TextBox1,在test2.ascx中加入一个按钮btnOK。

在test2.asc.cs中加入下面的代码:
        private void btnOK_Click(object sender, System.EventArgs e)
        
{
            OnCancel(
new EventArgs());
        }

        
public static event CancelEventHandler Cancel;  //注意:声明事件要是静态的。

        protected virtual void OnCancel(EventArgs e) 
        

            
if(Cancel!=null)
            
{
                Cancel(
this,e); 
            }

        }


    
public delegate void CancelEventHandler(object sender,EventArgs e); 
在test1.ascx.cs中加入下面的代码:
//要调用执行的方法
        private void test1_Message(object sender,EventArgs e) 
        { 
            
this.TextBox1.Text="测试";
        }

        
#region Web 窗体设计器生成的代码
        
override protected void OnInit(EventArgs e)
        {
            
//
            
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            
//
            InitializeComponent();
            
base.OnInit(e);
        }
        
        
/// <summary>
        
///        设计器支持所需的方法 - 不要使用代码编辑器
        
///        修改此方法的内容。
        
/// </summary>
        private void InitializeComponent()
        {
            
this.Load += new System.EventHandler(this.Page_Load);
//将test_Message加入Cancel事件
            test2.Cancel+=new CancelEventHandler(test1_Message);

        }
        
#endregion


 这样,当单击test2上的btnOK时,就会执行OnCancel调用Cantel事件并执行test1中的test1_Message方法。这只是一个简单的例子,但这种应用很广泛,你可以用在自定义组件的交互,可以调用方法执行更复杂的逻辑。

posted on 2005-09-29 18:08  Conan  阅读(1015)  评论(6编辑  收藏  举报