如何从另一个表单(类)中调用一个comboBox以在按钮内使用

时间:2014-06-06 07:10:39

标签: c# forms

我想调用一些组合框项目,这样我就可以创建一个if / else语句并输出一个表单。组合框项目在我的课程外面(Form)如何访问它们我试过这个(下面)但错误说在当前上下文中不存在。我也改变了它 从私人到公共的方法

public void buttonFinish_Click(object sender, EventArgs e)
{           
    if(comboBoxD.Text == "Alphabet" && comboBoxType.Text == "Numbers")
    {

    }
}

3 个答案:

答案 0 :(得分:1)

使用构造函数将ComboBox从form1发送到form2。这是一个例子:

Form1 Class:

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

   private void Form1_Load(object sender, EventArgs e)
   {
       Form2 f2 = new Form2(comboBox1, comboBox2);
       f2.Show();
   }
}

Form2类:

public partial class Form2 : Form
{ 
   ComboBox comboBoxD; 
   ComboBox comboBoxType;

   public Form2(ComboBox cb, ComboBox cbType)
   {
        InitializeComponent();
        comboBoxD = cb;
        comboBoxType = cbType;
   }

   private void Form2_Load(object sender, EventArgs e)
   {

   }

   protected void buttonFinish_Click(object sender, EventArgs e)
   {           
        if(comboBoxD.Text == "Alphabet" && comboBoxType.Text == "Numbers")
        {

        }
   }
}

<强>更新

以下是访问另一种形式的控件的另一种方法。

每个控件的默认Modifiersprivate。对于您要从其他表单访问的控件,您将Modifiers属性更改为Public

enter image description here

Form1 类:

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

   private void Form1_Load(object sender, EventArgs e)
   {
       Form2 f2 = new Form2(this);
       f2.Show();
   }
}

Form2 类:

public partial class Form2 : Form
{
    private Form1 f1;
    public Form2(Form1 f)
    {
      InitializeComponent();
      f1 = f;
    }

    protected void buttonFinish_Click(object sender, EventArgs e)
    {           
        if(f1.comboBoxD.Text == "Alphabet" && f1.comboBoxType.Text == "Numbers")
        {

        }
    }
}

答案 1 :(得分:0)

您可以在public的课程中编写ComboBox方法,然后从您拥有该表单实例的地方调用该方法。

像这样:

以您的主要形式:

  using (var modal = new MyModal())
  {
            modal.ShowDialog();
            modal.getSomething();
  }

在你的模态中:

  public string getSomething()
  {
       return yourComboBox.Text;
  }     

答案 2 :(得分:0)

这是因为您的ComboBox仅在表单的代码隐藏文件中可用。

一种解决方案是将对组合框的引用存储为代码隐藏中的属性。

像这样:

public ComboBox myCmbBox { get; private set; }

并在form2的代码隐藏中访问它。