C#的usercontrol怎么通知主串口更改数据

C#的winform程序,主窗口Form1,然后定义了几个usercontrol,所有参数存在一个xml中。当usercontrol的控件的值改变的时候,怎么调用主窗口的函数来更改xml文件。
另外,当点击usercontrol的某个控件的时候,怎么在主窗口的textbox中显示一些信息。

2个回答

控件中定义事件,参数改变时在自定义控件中触发事件,在主窗口中编写事件处理函数,读取你的控件的属性并且显示。

 大概的代码
class UserControl
{
public event EventHandler Changed;

public void foo()
{
... //修改控件状态
if (Changed != null)
Changed(this, new EventArgs());
}

...
}

在主窗口的构造函数或者创建用户控件的地方
userControl.Changed += new EventHandler(userControl_Changed);
...
private void userControl_Changed(object sender, EventArgs e)
{
// 更新界面
}
qianqiubiluo
qianqiubiluo 回复caozhy: 我加上了,但是我一点击button1,没有反应,显示Changed是空的,如果我不判断changed是否为空,就会报错说:使用new关键字创建对象实例。在调用前,判断对象是否为null
接近 4 年之前 回复
qianqiubiluo
qianqiubiluo 回复caozhy: public event EventHandler Changed; public void button1_Click(object sender, EventArgs e) { if (Changed != null) { Changed(this,new EventArgs()); } } 我是这么写的。
接近 4 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qianqiubiluo: dll也是可以的,你加上using 命名空间了么?
接近 4 年之前 回复
qianqiubiluo
qianqiubiluo 回复caozhy: 我的usercontrol是以dll形式被主窗口引用的,这样好像不行
接近 4 年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qianqiubiluo: Changed(this, new EventArgs()); 这就是触发
接近 4 年之前 回复
qianqiubiluo
qianqiubiluo changed事件怎么触发呀
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐