使用其表单外部的对象

时间:2011-12-14 09:06:31

标签: c#

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

我试过

 IDComboBox4.Enabled = false; 
表单1中的

但是我得到了错误,说

  

“名称'IDComboBox4'在当前上下文中不存在”。

更新:

我尝试了两个答案,但遗憾的是都没有奏效。现在我收到语法错误

  

“非静态字段,方法或属性需要对象引用”

尝试代码时

    dlgForm.ComboBox4Enabled = false;
Form1中的

代码

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

也是dlgForm。我觉得我忽略了一些基本的东西,但是暂时不能把手指放在它上面。如果您想要我的代码的一些片段让我知道。任何帮助表示赞赏。再次感谢。

2 个答案:

答案 0 :(得分:3)

注意:这是一个按钮的示例,您可以将其更改为组合框

在设计器中选择您的按钮,转到它的属性并将“修改器”属性从私有更改为公共。

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;
        }
    }
}

答案 1 :(得分:3)

如果您愿意,您可以公开IDComboBox4并使用form2.IDComboBox4.Enabled = false;,但我强烈建议您在表单2上创建一个属性,允许您在不访问form2内部的情况下执行此操作。像这样:

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

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

虽然你正在使用它 - 你真的应该重命名你的组合框等,以便它们对下一个开发人员有意义。 _cbbJobTitle或其他。