将控件存储在变量中

时间:2011-10-19 06:50:08

标签: c# class controls

我想在变量中存储通用控件而不知道它的类型。我需要访问一些常见的属性,如名称,大小,位置......我只想存储单选按钮,标签,图片框......任何人都可以告诉我如何做到这一点?

6 个答案:

答案 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>