gpt4 book ai didi

c# - 在两个表单之间传输数据而无需再次创建新实例

转载 作者:行者123 更新时间:2023-11-30 20:55:05 24 4
gpt4 key购买 nike

我们可以使用以下代码将数据从 Form1 传输到 Form2:

Form2 frm2 = new Form2();
frm2.textBox1.Text = listBox1.SelectedItem.ToString();
frm2Show();

现在我想在不创建新实例的情况下将数据发送回 Form1,这怎么可能?

最佳答案

一个方法是给Form1添加一个属性,然后将Form1的实例传递给Form2构造函数。 Form2 然后可以访问 Form1 的属性来设置数据。然而,这将 Form1Form2 紧密耦合在一起,这可能是一件坏事。

更好的方法是在 Form2 中声明一个 事件 和一个自定义事件处理程序,Form1 订阅。自定义事件处理程序可以有一个属性,其中包含您要发送回 Form1 的数据。

表格 2:

public event EventHandler<Form2EventArgs> Form2Event;

public class Form2EventArgs : EventArgs
{
// for illustration only:
// do NOT use `object` and to NOT call it `Data`
public object Data {get;set;}
}

Form1 中的事件监听器:

private void GetData(object sender, Form2EventArgs args)
{
object data = args.Data;
// do something with the data
}

订阅事件:

Form2 form2 = new Form2();

form2.Form2Event += GetData;

触发事件:

object data = ///  blah
if(Form2Event != null)
Form2Event(this, new Form2EventArgs {Data = data});

关于c# - 在两个表单之间传输数据而无需再次创建新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18555381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com