我想在变量中存储通用控件而不知道它的类型。我需要访问一些常见的属性,如名称,大小,位置......我只想存储单选按钮,标签,图片框......任何人都可以告诉我如何做到这一点?
答案 0 :(得分:3)
是的,您可以使用List<Control> myControls = new List<Control>();
虽然Control是每个WinForm控件的基类,但您可以访问名称等属性。
myControls.add(pictureBox1);
myControls.add(textBox1);
您还可以通过执行
将Cast转换为控制if(myControls[0] is TextBox)
TextBox txtbx1 = (TextBox)(myControls[0]);
答案 1 :(得分:2)
控件继承自base class Control
,它具有您提及的所有属性。您可以键入要包含Control
的控件集合。
答案 2 :(得分:2)
如果你在谈论Winforms,它们都来自Control,所以只需要制作一个这样的控件列表:
public List<Control> MyControls;
答案 3 :(得分:0)
将变量声明为所有这些控件继承的类型的列表,我相信这将是Control
。然后,您可以访问Control
类声明的所有成员(包括属性)。
var MyControls = new List<Control>();
MyControls.Add(MyPicBox);
MyControls.Add(MyRadioButton);
答案 4 :(得分:0)
你可以这样做:
List<Control> myControls = new List<Control>();
myControls.Add(new Label());
myControls.Add(new Button());
myControls.Add(new PictureBox());
foreach (var myControl in myControls)
{
myControl.Name = "New Name";
myControl.Size = new Size(100, 200);
myControl.Location = new Point(100, 100);
}
答案 5 :(得分:0)
声明Base类类型的变量。基类类型变量可以包含子类的实例。
例如,在WPF中,您可以执行List<System.Windows.Controls.Control>
对于Win表单,您可以执行List<System.Windows.Forms.Control>