c# - c# 多个窗体之间的通信

标签 c# winforms forms

我正在开发一个涉及多个由按钮、事件等触发的表单的程序。 我在通过多种形式传递和更改对象时遇到问题。

例如,假设我有 form 1form 2form 3

我在表单 1 中定义了一个列表,但所有 3 个表单都需要能够更改该列表中的值?

我猜这不像写那么简单:

Form1 frm1 = new Form1(); 

Form2 frm2 = new Form2();

等...

这样做的更好方法是什么?

最佳答案

您不需要任何静态成员即可完成此操作。我会建议以下内容:

  1. 实例化所有表单都可以访问的列表。如果您要将某些控件(列表框、组合框...)数据绑定(bind)到它,请查看 BindingList 类型。

  2. 让表单的构造函数接受他们将使用的列表,例如作为要绑定(bind)的数据源。

    var list = new BindingList(...);
    var form1 = new Form1(list);
    var form2 = new Form2(list);
    
  3. 如果您的表单需要同时打开,请使用 Show 方法而不是 ShowDialog 以非模式方式显示它们。

关于c# - c# 多个窗体之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11127212/

相关文章:

c# - 如何使 Janus GridEx 列只读?

c# - 使用 HTTP PUT 将文件上传到 Sharepoint (WSS 3.0) 文档库

c# - 使用 Xsd 验证序列化 WCF 代理类中的 Xml 时缺少架构错误

c# - 每当我将 UserControl 添加到窗体时,我的 UserControl 都会使 Visual Studio 崩溃

php - 表单提交失败后使用 PHP 重新填充所选选项值的最佳方法?

jquery - 如何在用户在论坛上发帖时保持他们的 session 活跃?

c# - 无法在 .Net (C#) 中使用 ajax 发送基本的非 MVC 表单

c# - 为什么 Html.DropDownListFor 需要额外的转换?

c# - 如何使特定的树节点在 TreeView 中显示为文件夹

c# - 表单之间通信的最佳方式?