C#窗体间的数据调用
时间: 2024-09-27 14:04:03 浏览: 37
在C#中,窗体间的数据调用通常通过事件、委托、属性或者数据绑定等方式实现。以下是几种常见的方法:
1. **事件**:一个窗体可以公开一个事件,并在另一个窗体上订阅这个事件。当数据需要从一个窗体传递到另一个窗体时,发布者窗体触发该事件,接收者窗体捕获并处理数据。
```csharp
public partial class SenderForm : Form {
public event EventHandler<DataEventArgs> DataChanged;
private void sendData() {
if (DataChanged != null) {
DataChanged(this, new DataEventArgs());
}
}
}
public partial class ReceiverForm : Form {
public void OnDataReceived(DataEventArgs e) {
// 处理接收到的数据
}
SenderForm sender = new SenderForm();
sender.DataChanged += OnDataReceived;
}
```
2. **委托和方法**:直接使用委托将方法作为参数传递,调用方可以直接调用这个方法传递数据。
```csharp
public delegate void SendDataEventHandler(object sender, DataEventArgs e);
public partial class SenderForm : Form {
public void SendData(DataEventArgs data) {
// 发送数据
}
}
public partial class ReceiverForm : Form {
public void GetData() {
SenderForm sender = new SenderForm();
sender.SendData(new DataEventArgs());
}
}
```
3. **属性**:通过设置公共属性,可以在一个窗体修改后立即反映到其他窗体。
```csharp
public partial class ParentForm : Form {
public string SharedData { get; set; }
}
public partial class ChildForm : Form {
public void UpdateParentData(string newData) {
ParentData.sharedData = newData;
}
}
```
4. **数据上下文/绑定**:如果使用Windows Forms DataBinding,可以将数据源绑定到控件上,数据会自动同步。
```csharp
public partial class DataSource : BindingList<string> { ... }
// 在窗体A中设置数据源
DataSource ds = new DataSource();
this.dataGridView.DataSource = ds;
// 在窗体B更新数据源
ds.Add("New Data");
```
阅读全文