我想使用泛型类的表单控件。在VB中非常容易,但在C#中我很难学习它。 所以搜索我找到了一个简单的答案,我在这里应对
在设计器中将控件设置为public:
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)
我们该怎么做?
提前致谢, 利亚
答案 0 :(得分:2)
嗯,它是直截了当的:
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;
而不是另一种静态方法?
答案 1 :(得分:0)
只需按照您的描述实现它:将控件和状态作为参数传递给方法。不要忘记包括: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。我在第一个版本中误读了。你想要一个静态方法。改变了
答案 2 :(得分:0)
为什么不简单:
public static void HideControl(Control control, bool visible)
{
control.Visible = visible;
}
答案 3 :(得分:0)
在本例中,您有一个名为 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;