C# winform 普通类如何与窗体类实现数据通信
时间: 2024-10-12 20:11:25 浏览: 39
在C# WinForm应用程序中,普通类(非继承自System.Windows.Forms的类)与窗体类之间的数据通信通常通过以下几种方式进行:
1. **属性访问**:你可以创建公共属性(Public Property)在普通类中存储数据,窗体类可以直接读写这些属性来进行交互。
```csharp
public class MyClass // 普通类
{
public string Data { get; set; }
}
// 窗体类
public partial class Form1 : Form
{
private MyClass myClass = new MyClass();
// 在窗体上设置和获取数据
public void UpdateData(string newData)
{
myClass.Data = newData;
}
public string GetData()
{
return myClass.Data;
}
}
```
2. **事件订阅**:窗体类订阅普通类中的事件,在该事件触发时处理数据更新。
```csharp
public class MyClass
{
public event EventHandler<DataUpdatedEventArgs> DataChanged;
// 触发事件
public void UpdateData(string newData)
{
if (DataChanged != null)
DataChanged(this, new DataUpdatedEventArgs(newData));
}
}
// 窗体类
public partial class Form1 : Form
{
public void OnMyClassDataChange(DataUpdatedEventArgs e)
{
// 处理数据更新
}
private void MyClass_DataChanged(object sender, DataUpdatedEventArgs e)
{
OnMyClassDataChange(e);
}
}
```
3. **数据上下文(DataContext)**:如果窗体内部有一个数据绑定控件,可以将普通类设置为数据上下文,让控件自动跟踪数据变化。
4. **委托和方法封装**:创建一个委托类型的公共方法,用于传递数据到窗体。
无论哪种方式,记得保持良好的设计原则,例如解耦、避免全局状态等,以便于维护和扩展。
阅读全文