我想调用一些组合框项目,这样我就可以创建一个if / else语句并输出一个表单。组合框项目在我的课程外面(Form)如何访问它们我试过这个(下面)但错误说在当前上下文中不存在。我也改变了它 从私人到公共的方法
public void buttonFinish_Click(object sender, EventArgs e)
{
if(comboBoxD.Text == "Alphabet" && comboBoxType.Text == "Numbers")
{
}
}
答案 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")
{
}
}
}
<强>更新强>:
以下是访问另一种形式的控件的另一种方法。
每个控件的默认Modifiers
为private
。对于您要从其他表单访问的控件,您将Modifiers
属性更改为Public
。
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的代码隐藏中访问它。