【问题标题】:How to use form controls from a class如何使用类中的表单控件
【发布时间】:2017-02-07 07:51:30
【问题描述】:

我想使用泛型类中的表单控件。在 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();

我现在的问题是: 如果我们想要更通用并将控制和状态(真/假)传递给类方法,例如

 exampleClass.HideButton(Control, Status) 

我们该怎么做?

提前致谢, 埃利亚斯

【问题讨论】:

    标签: c# controls


    【解决方案1】:

    这很简单:

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

    你这样称呼它

    ExampleClass.HideControl(frm.Button1, true);
    

    但是写完之后我想知道,你为什么需要这个?如果您已经拥有Button,为什么不直接拨打电话

    frm.Button1.Visible = false;
    

    而不是另一个静态方法?

    【讨论】:

    • 感谢 Rene 和大家的帮助。我不仅使用工具栏按钮来启用/禁用,而且我在所有表单中都使用了很多状态栏来显示消息。这就是为什么我对主 MDI 窗体的所有控件使用具有通用方法的类的原因。再次感谢。
    • @ekekakos 在 StackOverflow 上感谢的最佳方式是接受对您有帮助的答案。
    【解决方案2】:

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

    public class Class2
    {
        public static void HideButton(Control c, bool status)
        {
            c.Visible = status;
        }
    }
    

    并像这样在WinForm 中使用外部类:

    Class2.HideButton(this.button2, false);
    

    PS。我在第一个版本中看错了。你想要一个静态方法。改了

    【讨论】:

      【解决方案3】:

      为什么不简单:

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

      【讨论】:

        【解决方案4】:

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

        在exampleClass中(注意:我的Form Class的名字='Form1'):

        Form1 ui = new Form1();
        ui.button1.Visible = false;
        

        在 (FormName).Designer.cs 中,因此在我的情况下,Form1.designer.cs 将适当的控件从“私有”更改为“公共”:

        public System.Windows.Forms.Button button1;
        

        【讨论】:

          猜你喜欢
          • 2016-11-25
          • 1970-01-01
          • 1970-01-01
          • 2011-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-05
          相关资源
          最近更新 更多