【问题标题】:c# - difference between Button and System.Windows.Forms.Button?c# - Button 和 System.Windows.Forms.Button 的区别?
【发布时间】:2011-10-09 04:28:51
【问题描述】:

在我的 form1 类中,我使用设计器添加了许多按钮。即button1,button2.etc

在我的控制器类中,我创建了一组按钮,例如:

Btns[k,m] = new Button();

然后去:

Btns[1,1].Name = "button1";
Btns[1,1].Visible = False;

但这实际上并没有改变我的表单类上按钮的可见性。有谁知道为什么?

基本上在控制器中创建一个按钮名称数组,这些名称实际上链接到我的 form1 类中的表单按钮。

【问题讨论】:

    标签: c# .net winforms button


    【解决方案1】:

    ButtonSystem.Windows.Forms.Button 之间没有区别,假设您是 using System.Windows.Forms 并且没有歧义。

    不要用新按钮覆盖Btns[k, m]。也就是去掉这一行:

    Btns[k, m] = new Button();
    

    如果 Btns 不是由设计器设置的,并且其元素是 null,则将它们设置为从设计器创建的按钮:

    Btns[1, 1] = button1;
    

    【讨论】:

    • 我试过了,但是在运行时下面的行 'Btns[1,1].Visible = False;'抛出错误:对象引用未设置为对象的实例。
    • 好的,我解决了。现在有什么办法吗: String varb = "button" + k; Btns[1, 1] = 变量; ?
    • @toop: (Button)this.GetType().GetField("button" + k).GetValue(this)
    【解决方案2】:

    .Net 框架中的 Button 类位于 System.Windows.Forms 包下。默认情况下,这已在 Windows 窗体应用程序中引用。在 C# 中你会看到

    using System.Windows.Forms;
    

    在任何形式的代码后面的顶部。如果是VB.Net你可能看不到

    Imports System.Windows.Forms
    

    就像在 C# 中一样,但是如果您转到解决方案资源管理器中的引用,您会看到该引用已经存在。

    由于您已经有了参考,因此只需键入 Button 或 System.Windows.Forms.Button 没有区别。如果您使用 System.Windows.Forms,我们可以说它就像完全限定路径。

    例如,想象一所学校的一个特定教室(假设是 11 年级的 A 班),并带一个名叫 David 的学生,想象你也在同一个教室里。所以如果你想推荐他,你只需叫他的名字大卫。现在想想你在不同的班级,你想推荐他。所以在这种情况下,仅仅打电话给大卫并不足以识别他。你必须说这样的话。“来自11年级A班的大卫”。现在再想一想,如果你们两个在同一个班,当你想推荐他时,如果你称他为“来自 11 年级 A 班的大卫”而不是仅仅使用大卫,这看起来有点愚蠢。

    因此,如果您在同一个班级(=> 您已经定义了 using System.Windows.Forms)并且想要引用 David(=> Button) 只是说 Button 就足够了,否则您可以使用 System.Windows.Forms .按钮。

    希望你能有所了解。

    谢谢

    【讨论】:

      【解决方案3】:

      我认为主要区别在于处理表单所需的一个,而另一个可用作启动器/超链接掩码

      【讨论】:

      • 我真的不明白为什么你有 Btns[k,m]??
      • 它用于二维数组Btns,但不要认为它与问题的核心有关。
      猜你喜欢
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 2021-06-07
      • 2010-11-26
      • 1970-01-01
      相关资源
      最近更新 更多