C#:如何访问表单类之外的按钮

时间:2009-03-26 18:51:26

标签: c# .net winforms

我想要启用或禁用其他文件中的按钮,我该怎么办?

这是表单类声明:

public partial class Form1 : Form

我试过

Form.btnName.enabled = false/true 

但是没有btnName成员。

提前致谢!

7 个答案:

答案 0 :(得分:8)

简单地公开一个公共方法:

public void EnableButton(bool enable)
{
    this.myButton.Enabled = enable;
}

校正:

public void EnableButton()
{
    this.myButton.Enabled = true;
}

答案 1 :(得分:3)

您需要通过将btnName成员公开或使用各种属性来将其公开给其他类。例如,将以下代码添加到Form1

public Button ButtonName { get { return btnName; } }

现在,您可以将form.ButtonName用于Form1的任何实例

答案 2 :(得分:3)

我真的建议您阅读有关表单如何适应.net的更多信息。您在示例代码“Form.btnName.enabled = false / true”

中有几个问题
  • 您的表单称为Form1,它继承自Form。
  • 表单是实例,实际上您可以在属于同一类的应用程序中具有不同的表单实例。
  • 由于上述原因,访问Form1.btnName没有意义。您必须通过特定实例来完成。
  • 默认情况下,表单的控件不公开,为此定义一个方法。
  • Windows表单项目,通常有一个运行表单的main。在那里,您可以访问表单实例并将其交给应用程序中的其他内容。
  • 以上回答了具体问题。请注意,有多种方法可以实现不同的方案,而您真正想要做的可能不需要上述方法。

答案 3 :(得分:1)

这是因为默认情况下,表单上的控件不公开(与VB6不同,所有控件都是公开公开的。)

我相信您可以将设计师的可见性访问者更改为公开,但这通常是一个坏主意。

相反,您应该在窗体上公开一个方法,该方法将对按钮执行操作,并使该方法可以被您想要调用它的任何代码访问。这样可以实现更好的封装,并有助于防止代码中出现副作用。

答案 4 :(得分:0)

您必须在Form1的特定实例上指定它。

即如果您有类似Form1 myForm = new Form1(...);的内容,那么您可以myForm.btnName.Enabled = false;

这也要求btnName是公共的。使一个属性或访问者检索它比直接提供默认情况下私有按钮字段成员的公共访问权限要“更好”。

答案 5 :(得分:0)

您需要添加公共属性或方法来设置按钮。

public void DisableBtnName()
{
  this.btnName.Enabled=false;
}

public Button BtnName
{
    get { return this.btnName;}
}

答案 6 :(得分:0)

在Form1 中,为外部类创建一个对象(在参数中添加按钮名称)

Class1 obj_Class1 = new Class1(btnName);

在Class1 中,创建一个私人按钮

private System.Windows.Forms.Button btnName;

在Class1 Construct中

 public Class1(System.Windows.Forms.Button btnName)
        {
            this. btnName = btnName;
        }

然后您可以访问您的按钮,

btnName.enabled = false/true;