winform 父窗体与子窗体数据传递

本文介绍了如何在C#的WindowsForms应用程序中使用事件委托实现父子窗体之间的数据传递,包括通过控件和函数两种方式,并提供了相应的代码实例。
摘要由CSDN通过智能技术生成

实例截图

父窗体代码如下:


public partial class Form1 : Form
{
Child2 child2 = new Child2();
public Form1()
{
InitializeComponent();
child2.receive += new Child2.receiveData(testReceive);
}

private void button2_Click(object sender, EventArgs e)
{
string ls = textBox1.Text;
for(int i=0;i< child2.Controls.Count; i++)
{
Control c = child2.Controls[i];
if (c.Name == "txtReceive")
{
c.Text = "通过查找控件传递数据:"+ls;
}
}

child2.getReceiveData("通过函数传递数据:"+ls);

}

private void button3_Click(object sender, EventArgs e)
{
child2.Show();
}

private void testReceive(object o)
{
textBox2.Text = o.ToString();
}
}

子窗体代码如下:

public partial class Child2 : Form
{
public delegate void receiveData(object o);
public event receiveData receive;
public Child2()
{
InitializeComponent();
}

public void getReceiveData(object o)
{
txtReceive2.Text = o.ToString();
}
public void Receive(object o)
{
receive(o);
}

private void button1_Click(object sender, EventArgs e)
{
Receive(txtReceive3.Text);
}
}

一个简单的父子窗体数据传递。亲测,可以实现上面的效果,谢谢!

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 WinForm 中,可以通过使用委托将消息从传递。委托是一种允许我们在一个中定义一个事件,并在其他中响应该事件的机制。 首先,在中定义一个委托类型的事件,并创建一个触发事件的方法。例如: ``` // 中定义委托事件 public delegate void MyEventHandler(string message); public event MyEventHandler MyEvent; // 触发事件的方法 private void SendMessageToChild() { if (MyEvent != null) { MyEvent("这是来自的消息"); } } ``` 然后,在中订阅这个事件,并定义一个处理事件的方法。例如: ``` // 中订阅事件 private void SubscribeParentEvent() { ParentForm parent = (ParentForm)this.ParentForm; parent.MyEvent += new MyEventHandler(ReceiveMessageFromParent); } // 处理事件的方法 private void ReceiveMessageFromParent(string message) { // 在中处理传递过来的消息 Console.WriteLine(message); } ``` 最后,在中创建的实例并显示。在需要传递消息的时候,调用的触发事件方法。例如: ``` // 创建并显示 ChildForm child = new ChildForm(); child.SubscribeParentEvent(); child.Show(); // 在需要传递消息的时候调用的方法 ParentForm parent = new ParentForm(); parent.SendMessageToChild(); ``` 通过上述步骤,我们就可以在之间通过委托实现消息的传递。优点是可以实现之间的松耦合,可以通过委托监听中的事件并作出相应处理。 ### 回答2: 要实现winform中委托传递的功能,可以按照以下步骤进行操作: 1. 在中定义一个委托类型和事件,用于传递需要在中执行的方法。例如: ``` public delegate void MyDelegate(string message); public event MyDelegate SendMessageEvent; ``` 2. 在需要的时候,触发这个事件并传递相应的参数。例如: ``` SendMessageEvent?.Invoke("Hello, !"); ``` 3. 在中定义一个接收委托类型的方法,并在需要的时候注册这个方法到的事件中。例如: ``` public void ReceiveMessage(string message) { MessageBox.Show(message); } // 在加载时注册接收方法到的事件中 private void ChildForm_Load(object sender, EventArgs e) { ParentForm parent = (ParentForm)this.Owner; parent.SendMessageEvent += ReceiveMessage; } ``` 通过以上操作,就可以实现在中定义委托,并在中接收并执行相应的方法。当触发事件时,中注册的方法会被调用,实现了委托的传递功能。 ### 回答3: 在WinForm中,可以通过委托将信息从传递。委托是一种特殊的数据类型,它允许将方法作为参数传递,并在需要时调用。 首先,在的类中定义一个委托,该委托代表的方法签名。例如,如果要传递一个字符串参数,可以定义一个委托如下: ```csharp public delegate void MyDelegate(string message); ``` 在中,实例化的对象,并创建一个委托的实例。然后,将的方法绑定到委托实例中。最后,将委托实例传递的构造函数或公共属性。例如: ```csharp public partial class ParentForm : Form { private ChildForm childForm; public ParentForm() { InitializeComponent(); childForm = new ChildForm(); MyDelegate myDelegate = new MyDelegate(this.SendMessage); childForm.MyEventHandler = myDelegate; } private void SendMessage(string message) { MessageBox.Show("Received message: " + message); } } ``` 在中,定义一个公共属性来接收委托的实例,并在需要时调用该委托。例如: ```csharp public partial class ChildForm : Form { public MyDelegate MyEventHandler { get; set; } private void Button_Click(object sender, EventArgs e) { MyEventHandler?.Invoke("Hello from child form!"); } } ``` 在中的按钮点击事件中,调用委托实例的Invoke方法,并传递需要发送的信息。 这样,当中的按钮被点击时,委托会调用中定义的方法,并将消息传递会弹出一个消息框显示接收到的信息。 以上就是使用委托在WinForm中实现传递信息的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值