我正在尝试根据表单1选择的值禁用表单2中的某些组合框。
让我们说 在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#的新内容)
答案 0 :(得分:0)
如果使用以下语法在Form上创建Form1:
Form1 f = new Form1();
您将获得Form1(或“copy”)的新实例,而不是已经打开的实例。您需要将Form1的引用传递给Form2。
将此代码放入Form2:
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);
答案 1 :(得分:0)
现在,关于启用/禁用,您可以使用属性或方法方法告诉“其他”表单启用/禁用状态...示例只是设置/获取值。如果对所讨论的一个表单执行诸如boolean之类的集合,则您的setter部分可能类似于
private bool enableFromOtherForm;
public bool EnableFromOtherForm
{
get { return enableFromOtherForm; }
set { this.controlToChange.IsEnabled = value; }
}