如何禁用基于Form1的组合框值窗口2的组合框?(How to disable form2 comb

2019-10-19 02:44发布

我试图禁用一些表格2的组合框基于在形式上1选择的值。

比方说,在Form1如果comboxbox值为0禁用某些组合框形式2

我已经在Form1做

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    public ComboBox combo
    {
        get { return dropdown; } 
    }

和在形式2迄今

private void Form2_Load(object sender, EventArgs e)
{
  Form1 f = new Form1();
  if (f.combo.SelectedIndex == 0)
  {
    comboBox1.Enabled = false;
  }

这不是工作,我不能把它清除出来(新的C#)

Answer 1:

如果您在表格创建Form1中使用此语法:

  Form1 f = new Form1();

您将获得Form1的新实例(或“复制”),而不是一个那已经打开。 你需要传递Form1的到窗体2的参考。

将这个代码到窗体2:

private Form1 myParentForm;
public Form2(Form1 parentForm)
{
  myParentForm = parentForm;
}

然后,你可以通过一个变量myParentForm使用Form1上。 像这样:

private void Form2_Load(object sender, EventArgs e)
{
  if (myParentForm.combo.SelectedIndex == 0)
  {
    comboBox1.Enabled = false;
  }
}

在Form1你有一个代码是这样的:

Form2 mySecondForm = new Form2();

更改到:

Form2 mySecondForm = new Form2(this);


Answer 2:

下面是使用多个样品调用一种形式作为参数传递给另一个包括那些作为一个完整的一步一步的样本的一个现有的答案。

现在,对于启用/禁用,您可以使用属性或方法的方法告诉了“其他”的形式来开启/关闭状态...样品只是设置/获取值。 如果你做一套,例如布尔有问题的一种形式,你的二传手部分可能是这样的

   private bool enableFromOtherForm;
   public bool EnableFromOtherForm
   { 
      get { return enableFromOtherForm; }
     set { this.controlToChange.IsEnabled = value; }
   }


文章来源: How to disable form2 combo boxes based on form1 combo box value?