日期:2014-05-19  浏览次数:20834 次

求解:一个usercontrol的事件怎么引发另一个usercontrol的方法?
usercontrol   A   动态加载到form上,usercontrol   B   同时动态加载到usercontrol   A上。怎样使   A   上的一个combo的改变,引发   B   上的数据改变呢?

应该用事件委托吧?不太会写。
谢谢。

------解决方案--------------------
class usercontrolA
{
public event EventHandler OnMyEvent;
//..


void combo的改变()
{
//
OnMyEvent(this, EventArgs.Empty);

}
}

class usercontrolB
{
//得到控件A
usercontrolA a=..;
//注册事件
a.OnMyEvent += new System.EventHandler(this.RefreshYouDate);

private void RefreshYouDate(object sender, EventArgs e)
{
//.....

}

}
------解决方案--------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace testUC
{
public partial class UC1 : UserControl
{
public UC1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
uC21.RaiseEvent();
}
}
}


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace testUC
{
public partial class UC2 : UserControl
{
public UC2()
{
InitializeComponent();
}

private void UC2_Load(object sender, EventArgs e)
{
this.myevent += new MyEventHandler(MyEventFunc);
}
public delegate void MyEventHandler(object sender,System.EventArgs e);

public void MyEventFunc(object sender,System.EventArgs e)
{
label1.Text = "I success! ";
}

private event MyEventHandler myevent;

public void RaiseEvent()
{
EventArgs e = new EventArgs();
if (myevent != null)
myevent(this, e);
}

}
}
------解决方案--------------------
jjhlover(菜花)

==========OK
------解决方案--------------------
你这种设计方式是不合理的,因为这样form使用a 控件,必须使用b控件,不如直接做成一个控件。
或者而者引出时间有页面来调用