Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用类中的窗体控件_C#_Controls - Fatal编程技术网

C# 如何使用类中的窗体控件

C# 如何使用类中的窗体控件,c#,controls,C#,Controls,我想使用泛型类中窗体的控件。在VB中很容易,但在C中很难,因为我正在努力学习它。 因此,我找到了一个简单的答案,我在这里应付 在设计器中将控件设置为公共: public System.Windows.Forms.Button button1; 创建一个新类,例如将其重命名为exampleClass public class exampleClass { public static Form1 frm; public static void HideButt

我想使用泛型类中窗体的控件。在VB中很容易,但在C中很难,因为我正在努力学习它。 因此,我找到了一个简单的答案,我在这里应付


在设计器中将控件设置为公共:

  public System.Windows.Forms.Button button1;
创建一个新类,例如将其重命名为exampleClass

  public class exampleClass
  {
      public static Form1 frm;
      public static void HideButton()
      {
    frm.button1.Visible = false;
      }
  }
在Form1 InitializeComponent之后添加以下内容:

  exampleClass.frm = this;
现在,您可以在任意位置隐藏按钮:

  exampleClass.HideButton();

我现在的问题是: 如果我们想变得更一般,并将控件和状态(true/false)传递给类方法,例如

 exampleClass.HideButton(Control, Status) 
我们怎么办

提前感谢,,
Elias

只需按照您描述的方式实现它:将控件和状态作为参数传递给方法。不要忘记包括:
使用System.Windows.Forms

public class Class2
{
    public static void HideButton(Control c, bool status)
    {
        c.Visible = status;
    }
}
并在
WinForm
中使用外部类,如下所示:

Class2.HideButton(this.button2, false);

注:我在第一个版本中读错了。您想要一个静态方法。更改了它

只需按照您的描述实现它:将控件和状态作为参数传递给方法。不要忘记包括:
使用System.Windows.Forms

public class Class2
{
    public static void HideButton(Control c, bool status)
    {
        c.Visible = status;
    }
}
并在
WinForm
中使用外部类,如下所示:

Class2.HideButton(this.button2, false);

注:我在第一个版本中读错了。您想要一个静态方法。更改了它

很简单:

public class ExampleClass
{
    public static void HideControl(Control control, bool hide)
    {
        if (control != null) control.Visible = !hide;
    }
}
你把它叫做

ExampleClass.HideControl(frm.Button1, true);

但写完这篇文章后,我想知道,你为什么需要这个?如果您已经有了
按钮
,为什么不直接打电话呢

frm.Button1.Visible = false;

而不是另一种静态方法?

好吧,这是直截了当的:

public class ExampleClass
{
    public static void HideControl(Control control, bool hide)
    {
        if (control != null) control.Visible = !hide;
    }
}
你把它叫做

ExampleClass.HideControl(frm.Button1, true);

但写完这篇文章后,我想知道,你为什么需要这个?如果您已经有了
按钮
,为什么不直接打电话呢

frm.Button1.Visible = false;
代替另一种静态方法?

为什么不简单地:

public static void HideControl(Control control, bool visible)
{
    control.Visible = visible;
}
为什么不简单地:

public static void HideControl(Control control, bool visible)
{
    control.Visible = visible;
}

在本例中,您有一个名为Form1.cs的表单和一个名为exampleClass的类:

在exampleClass中(注意:我的表单类的名称='Form1'):

在(FormName).Designer.cs中,因此在我的示例Form1.Designer.cs中,将适当的控件从“private”更改为“public”:

public System.Windows.Forms.Button button1;

在本例中,您有一个名为Form1.cs的表单和一个名为exampleClass的类:

在exampleClass中(注意:我的表单类的名称='Form1'):

在(FormName).Designer.cs中,因此在我的示例Form1.Designer.cs中,将适当的控件从“private”更改为“public”:

public System.Windows.Forms.Button button1;

谢谢雷内和所有人的帮助。我不仅使用工具栏按钮来启用/禁用,而且还使用了我所有表单中的许多状态栏来显示消息。这就是为什么我要对主MDI窗体的所有控件使用一个带有通用方法的类。再次感谢。@ekekakos感谢StackOverflow的最好方式是接受帮助你的答案。感谢Rene和所有人的帮助。我不仅使用工具栏按钮来启用/禁用,而且还使用了我所有表单中的许多状态栏来显示消息。这就是为什么我要对主MDI窗体的所有控件使用一个带有通用方法的类。再次感谢。@ekekakos对StackOverflow表示感谢的最好方式是接受帮助你的答案。