我正在开发一个多Windows窗体项目,其中从一个窗体上的Combobox中选择的值应该在另一个窗体上启用ComboBox。谁能告诉我怎么做?
在Form1上的Combobox上,列表中的一些项目是“Mango”,“Banana”,“Papaya”,“Orange”。
在Form2上的Combobox上,值为1,2,3,4。因此,如果用户在表单1上选择Mango或Papaya,将启用form2上的组合框以供用户选择一个数字。否则,组合框将保持禁用状态。
这就是我的所作所为。
我为两个表单创建了一个包含2个属性的公共类。
public class FormValues
{
private bool _secondcbb = false;
private string _firstcbb = "";
public bool SecondCbb
{
get
{
return _secondcbb;
}
set
{
_secondcbb = value;
}
}
public string FirstCbb {get; set;}
}
// ..... On Form1:
Form2 frm2 = new Form2();
FormValue val = new FormValue();
private void ComboBox1_SelectedIndexChanged(whatever inside)
{
if(ComboBox1.SelectedText == "Mango")
{
val = true;
frm2.ComboBox2 = val;
}
}
我在Form2上没有做任何事情。除了添加控件并将Combobox设置为禁用。
答案 0 :(得分:1)
在Form 2上创建公共静态方法,如果选择了Form 1上的comboBox项,则会改变comboBox状态:
public static void ChangeState(bool state) // Method on Form 2
{
comboBox2.Enabled = state;
}
选择项目时启用comboBox2:
private void comboBox1_SelectedIndexChanged(whatever inside)
{
if(comboBox1.SelectedText == "Mango" || comboBox1.SelectedText == "Papaya")
frm2.ChangeState(true);
else
frm2.ChangeState(false);
}
答案 1 :(得分:0)
为什么不设置ComboBox2的enabled属性? 像这样:
frm2.ComboBox2.Enabled = true;
这样你也不需要FormValue,或者我错了吗?
答案 2 :(得分:0)
你的FormValues
课程正在做什么并不是很清楚,但我认为首先不需要这样做。在Form2
创建一个方法,该方法可以执行您需要的表单:
public void SomeMethod()
{
// enable the control?
// edit the control?
}
这将允许任何持有对Form2
实例的引用的内容使用公开的功能来操作它。提供Form1
的参考。它在内部实例化Form2
的实例,或者它需要一个作为构造函数参数。无论哪种方式,Form1
都应该引用Form2
的实例:
private Form2 Form2Instance { get; set; }
然后在Form1
中的控件处理程序中,您只需调用该实例上的功能:
this.Form2Instance.SomeMethod();