winform多窗口间传值
时间: 2023-10-20 18:07:00 浏览: 111
在 WinForm 中,可以使用以下方式在多个窗口之间传递值:
1. 使用构造函数传值:在新窗口的构造函数中添加参数,将需要传递的值作为参数传入。然后在打开新窗口时,将需要传递的值作为参数传入构造函数。
2. 使用属性传值:在新窗口中添加需要传递的属性,然后在打开新窗口时,将需要传递的值赋给属性。在新窗口中通过访问属性获取传递的值。
3. 使用事件传值:在新窗口中创建事件,然后在主窗口中订阅该事件。在打开新窗口时,将需要传递的值作为事件参数传入事件中。当新窗口中触发该事件时,主窗口中的事件处理程序就能够获取传递的值了。
相关问题
c#使用委托在WinForm窗口实时传值简单实例
在 C# 中,委托是一种类型,它允许我们创建匿名函数并将其作为方法参数传递。在 WinForms 应用程序中,你可以利用委托实现事件驱动的实时数据传输。这里是一个简单的例子:
假设有一个名为 `PriceChangedEventHandler` 的委托类型,用于处理价格变化事件:
```csharp
public delegate void PriceChangedEventHandler(object sender, EventArgs e);
```
然后,在一个名为 `Product` 的类中,我们有这样一个属性和一个更新价格的方法:
```csharp
public class Product {
public decimal Price { get; set; }
// 更新价格的方法
public void UpdatePrice(decimal newPrice) {
Price = newPrice;
OnPriceChanged(new PriceChangedEventArgs(Price)); // 触发事件
}
// 自定义事件
protected virtual void OnPriceChanged(PriceChangedEventArgs e) {
PriceChangedEventHandler handler = PriceChangedEvent;
if (handler != null) {
handler(this, e);
}
}
// 委托实例
private event PriceChangedEventHandler PriceChangedEvent;
}
```
在 WinForms 窗体(如 `Form1`)上,我们可以订阅这个事件并提供回调处理:
```csharp
public partial class Form1 : Form {
private Product product;
public Form1() {
InitializeComponent();
product = new Product(); // 初始化产品
// 订阅价格改变事件
product.PriceChangedEvent += Product_PriceChanged;
}
private void Product_PriceChanged(object sender, PriceChangedEventArgs e) {
MessageBox.Show($"产品价格已更新到: {e.NewPrice}");
}
// 相关问题:
阅读全文