针对经常有提问利用委托进行窗口传值写了个小例子,希望能给需要的人给点提示
这个简单的例子来实现.窗口间的传值.在2005测试正常.(2003没测但应该不会有问题)
里面有2个窗口MainForm和Pop,和一个类DeleTest
MainForm中有个按钮,点击打开Pop窗口
然后在pop上有个文本框和一个按钮,点击按钮将mainForm的标题改为pop窗口里文本框的内容
1.DeleTest.cs
namespace WinForm.Temp.Delegate
{
public delegate void EventHandlerTest(string str);
class DeleTest
{
public static DeleTest Instance;
public event EventHandlerTest EventTest;
protected virtual void OnEventTest(string str)
{
if (EventTest != null)
EventTest(str);
}
static DeleTest()
{
Instance = new DeleTest();
}
public void TriggerEvent(string str)
{
OnEventTest(str);
}
}
}
2. Pop.cs中
namespace WinForm.Temp.Delegate
{
public partial class Pop : Form
{
public Pop()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DeleTest.Instance.TriggerEvent(textBox1.Text);
}
}
}
3.MainForm.cs中
namespace WinForm.Temp.Delegate
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
DeleTest.Instance.EventTest += new EventHandlerTest(Instance_EventTest);
}
void Instance_EventTest(string str)
{
this.Text = str;
}
private void button1_Click(object sender, EventArgs e)
{
(new Pop()).ShowDialog();
}
}
}