c# 自定义事件传参(控件数据同步更新)
时间: 2023-08-02 19:25:42 浏览: 52
在 C# 中,可以通过自定义事件来实现控件数据的同步更新。传参的方式可以通过定义事件的委托类型和使用 EventArgs 类型的参数来实现。
以下是一个示例代码:
```csharp
// 声明事件委托类型
public delegate void DataUpdatedHandler(object sender, DataUpdatedEventArgs e);
// 声明事件参数类
public class DataUpdatedEventArgs : EventArgs
{
public int Data { get; set; }
public DataUpdatedEventArgs(int data)
{
Data = data;
}
}
public class MyControl : Control
{
// 声明事件
public event DataUpdatedHandler DataUpdated;
private int _data;
public int Data
{
get { return _data; }
set
{
_data = value;
// 触发事件
OnDataUpdated(new DataUpdatedEventArgs(_data));
}
}
protected virtual void OnDataUpdated(DataUpdatedEventArgs e)
{
DataUpdated?.Invoke(this, e);
}
}
// 在使用 MyControl 的窗体中订阅事件
private void MyControl_DataUpdated(object sender, DataUpdatedEventArgs e)
{
// 更新其他控件的数据
// ...
}
// 在使用 MyControl 的窗体中传参更新数据
myControl.Data = 123;
```
在上面的示例代码中,MyControl 控件有一个 Data 属性,当该属性的值被修改时,会触发 DataUpdated 事件。在窗体中订阅该事件,并在事件处理方法中更新其他控件的数据。
通过自定义事件传递参数,可以实现控件间的数据同步更新。