C# 使用复选框从表单1禁用表单2上的按钮

C# 使用复选框从表单1禁用表单2上的按钮,c#,vb.net,visual-studio-2010,visual-studio,c#-4.0,C#,Vb.net,Visual Studio 2010,Visual Studio,C# 4.0,我有两个表单对象:form1和form2 我在form2上有一个按钮,在form1上有一个复选框。选中该复选框时,我希望显示该按钮,未选中该复选框时,我希望禁用该按钮。我知道,在visual basic中,我做了这样一件事: form2.button.visible = false 在c#中,我将如何做类似的事情 在一般情况下(当Form1和From2实例是独立的时),您可以这样做。在表单2中实现公共属性: 在myCheckBox上的Form1中找到Form2实例并分配属性: 在C#中基本上是

我有两个表单对象:
form1
form2

我在
form2
上有一个按钮,在
form1
上有一个复选框。选中该复选框时,我希望显示该按钮,未选中该复选框时,我希望禁用该按钮。我知道,在visual basic中,我做了这样一件事:

form2.button.visible = false
在c#中,我将如何做类似的事情

在一般情况下(当
Form1
From2
实例是独立的时),您可以这样做。在
表单2中
实现公共属性:

myCheckBox上的
Form1
中找到
Form2
实例并分配属性:


在C#中基本上是一样的。您获得对表单的引用,然后访问相应的成员。在VB中,设计器为控件生成的字段默认为
Friend
,而在C#中默认为
private
。如果希望从外部访问它们,则将它们声明为
内部
,这相当于
朋友
。我宁愿在两种语言中都使用
public
方法,但这取决于您。区别在于C#中没有默认实例。这意味着您需要在创建表单时保留对表单的引用,即将其分配给字段。为什么不将其作为答案@jmcilhinneycan?请提供一些代码。我搜索答案已经有一段时间了。@TheQuickBrownFox,看看这个人在你之后的评论?这就是我发表评论而不是回答的原因。
  public partial class Form2 {
    ...
    public Boolean IsMyButtonVisible {
      get {
        return myButton.Visible;
      } 
      set {
         myButton.Visible = value; 
      } 
    } 
    ...
  }
  public partial class Form1 {
    ...
    private void myCheckBox_CheckedChanged(object sender, EventArgs e) {
      foreach(Form f in Application.OpenForms) {
        Form2 form2 = f as Form2; 

        if (form2 != null)
          form2.IsMyButtonVisible = myCheckBox.Checked;
      }
    }
    ...
  }