求解:一个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控件,不如直接做成一个控件。
或者而者引出时间有页面来调用