使用窗体外部的对象

本文关键字:对象 外部 窗体 | 更新日期: 2023-09-27 18:18:01

我当前的项目要求我禁用表单2的组合框,当编辑按钮在表单1中单击。我想知道的是如何从表单1中禁用表单2中的组合框。

I tried

 IDComboBox4.Enabled = false; 
Form 1中的

但是我得到的错误是

"名称'IDComboBox4'在当前上下文中不存在".

更新:

我尝试了两个答案,但遗憾的是都没有成功。现在我得到一个语法错误

"非静态字段、方法或属性需要对象引用"

当尝试代码 时

    dlgForm.ComboBox4Enabled = false;
Form1中的

,代码

    public bool ComboBox4Enabled
    {
        get 
        { 
            return IDComboBox4.Enabled; 
        }
        set 
        {
            IDComboBox4.Enabled = value; 
        }
    }

中的Form2,也是dlgForm。我觉得我忽略了一些基本的东西,但是现在我不能把我的手指放在它上面。如果您想要一些我的代码片段,请告诉我。任何帮助都是感激的。再次感谢。

使用窗体外部的对象

如果你喜欢,你可以让IDComboBox4公开并使用form2.IDComboBox4.Enabled = false;,但我强烈建议你在表单2上创建一个属性,允许你在不访问表单2内部的情况下这样做。像这样:

public bool ComboBox4Enabled{
  get{return IDComboBox4.Enabled;}
  set{IDComboBox4.Enabled = value;}
}

然后用form2.ComboBox4Enabled = false;设置。

当你在做的时候,你真的应该重命名你的组合框等,这样他们对下一个开发人员来说就有意义了。_cbbJobTitle之类的

注意:这是一个按钮的例子,你可以将其更改为combobox

在设计器中选择你的按钮,进入它的属性,将"Modifiers"属性从Private更改为Public。

alt text http://xmages.net/out.php/i170429_1.png

然后你可以从另一个类访问它,像这样:

public static class Test
{
    public static void DisalbeMyButton()
    {
        var form = Form.ActiveForm as Form1;
        if (form != null)
        {
            form.MyButton.Enabled = false;
        }
    }
}