【问题标题】:How to access the controls of form2 in form1 in C# 2008/2010如何在 C# 2008/2010 中访问 form1 中 form2 的控件
【发布时间】:2011-02-02 01:01:13
【问题描述】:

如何在form1中访问form2的控件

我还想在 form1 本身中为 form2 控件创建事件。如何实现这一目标? 请帮助我完成使用 C#2008、Windows 窗体的代码。

【问题讨论】:

  • 你知道你不会得到太多回应,只要求完整的代码而不显示你想要实现的任何东西,不是吗?我们需要比这更多的信息,以及您尝试过的线索。

标签: c# visual-studio-2008 visual-studio-2010


【解决方案1】:

好的,假设您有 frmMain 和 frmSettings。您希望 frmSettings 更新例如 frmMain 上的标签。以下是我的做法。

第 1 步。在您的 frmMain.Designer.cs 中将标签(或其他控件)范围更改为公共。

示例。

public System.Windows.Forms.GroupBox groupBox2;
public System.Windows.Forms.Label label8;

现在很容易吧?

第 2 步。在您的 frmSettings 中声明这一点。

protected frmMain frmMain;

    public frmSettings(frmMain frmMain)
    {
        this.frmMain = frmMain;
    }

现在享受改变事物的乐趣吧。喜欢:

frmMain.label8.Text="Changed from frmSettings";

【讨论】:

    【解决方案2】:

    最佳实践希望您设置要公开的控件属性的属性,以便没有人可以真正干扰您的表单所需的行为。

    public partial class SecondaryForm {
        // Let's suppose you have put a TextBox control in design mode named txtCusomerName.
        public string CustomerName {
            set {
                this.txtCustomerName.Text = value.Trim();
            }
        }
    }
    
    public partial class MainForm {
        // Suppose you have a button to show a form with the customer name.
        private btnShowCustomerName_Click(object sender, EventArgs e) {
            SecondaryForm f
            f.CustomerName = "Acme inc,";
            f.ShowDialog();
        }
    }
    

    这有帮助吗?

    【讨论】:

      【解决方案3】:

      从表单 1 中打开表单 2,并使用打开它的变量来访问表单。例如。

      在表格 1 中

      Form2 secondForm = new Form2();
      Form2.Show();
      
      secondForm.somePublicControl.Text = "test";
      MessageBox.Show(secondForm.somePublicVariable);
      

      【讨论】:

      • 首先我无法访问第二个表单。无法访问第二个表单的控件。
      • 什么错误信息?您确定第二个表单控件是公共的还是继承修饰符(而不是私有的?),并且在尝试访问该表单上的控件之前,请确保您已经在第二个表单中调用了 InitialiseComponent。
      【解决方案4】:

      您真的想要以不同的形式访问控件,还是想要对其他表单中使用的数据的值更改做出反应?后一种情况可以通过将控件绑定到全局模型数据并使用 INotifyPropertyChanged 接口来发出信号/侦听数据更改来实现。

      【讨论】:

        【解决方案5】:

        今天帮助我的是 Call Form 1, Form 2 Function:

        f2 frm = new f2();
        frm.ShowDialog(this);
        MessageBox.Show(frm.proc); // frm.proc is variable public in Form2
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多