![](/img/trans.png)
[英]Unable to cast object of type 'System.Windows.Forms.FlowLayoutPanel' to 'System.Windows.Forms.Button c#
[英]c# - difference between Button and System.Windows.Forms.Button?
在我的form1类中,使用设计器添加了许多按钮。 即button1,button2.etc
在我的控制器类中,我创建了一个按钮数组,例如:
Btns[k,m] = new Button();
然后去:
Btns[1,1].Name = "button1";
Btns[1,1].Visible = False;
但这实际上并不会改变按钮在表单类上的可见性。 有人知道为什么吗?
基本上在控制器中创建一个按钮名称数组,这些按钮名称实际上链接到我的form1类中的表单按钮。
假设您using
System.Windows.Forms
,则Button
和System.Windows.Forms.Button
之间没有区别,并且没有歧义。
不要用新按钮覆盖Btns[k, m]
。 也就是说,删除以下行:
Btns[k, m] = new Button();
如果未从设计器设置Btns
且其元素为null
,则将它们设置为由设计器创建的按钮:
Btns[1, 1] = button1;
.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的学生想像您也位于同一教室。 因此,如果您想推荐他,您可以简单地称呼他为David,现在以为您属于另一个班级并且想要推荐他。 因此,在这种情况下,仅致电David不足以识别他。 您必须说这样的话。“ 11年级A级大卫”。 现在再想一想,如果你们俩都在同一个班级中,以及何时想推荐他,如果您称他为“ A级11年级的大卫”而不是仅仅使用David,那看起来有点愚蠢。
因此,如果您在同一类(=>中,则已经在使用System.Windows.Forms,并且已经定义了该对象),并且想引用David(=> Button)只是说Button就足够了,那么您可以使用System.Windows.Forms.Button。
希望你能有所想法。
谢谢
我相信主要区别是一个需要处理表单,另一个可以用作启动器/超链接掩码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.