Хранение элементов управления в переменной - PullRequest
1 голос
/ 19 октября 2011

Я хочу хранить общие элементы управления в переменной, не зная ее типа.Мне нужен доступ к некоторым общим свойствам, таким как имя, размер, местоположение ... я хочу хранить только радиокнопки, метки, графическое окно ... кто-нибудь может дать мне какую-либо идею, как это сделать?

Ответы [ 6 ]

3 голосов
/ 19 октября 2011

Да, вы можете использовать List<Control> myControls = new List<Control>(); в то время как Control является базовым классом каждого WinForm Control, вы можете получить доступ к таким свойствам, как Name.

myControls.add(pictureBox1);
myControls.add(textBox1);

Чем вы также можете повернуть назад, чтобы сделать контроль, выполнив

if(myControls[0] is TextBox)
    TextBox txtbx1 = (TextBox)(myControls[0]);
2 голосов
/ 19 октября 2011

Если вы говорите о Winforms, все они происходят от Control, поэтому просто составьте список Controls, как это:

public List<Control> MyControls;
2 голосов
/ 19 октября 2011

Элементы управления наследуются от базового класса Control, и он имеет все свойства, которые вы упомянули. Вы можете напечатать свою коллекцию элементов управления, чтобы они содержали Control.

0 голосов
/ 19 октября 2011

Объявление переменной типа базового класса. В качестве переменной типа базового класса могут храниться экземпляры дочерних классов.

Например, в WPF вы можете сделать List<System.Windows.Controls.Control>

для Win Forms вы можете сделать List<System.Windows.Forms.Control>

0 голосов
/ 19 октября 2011

Вы можете сделать это так:

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);
}
0 голосов
/ 19 октября 2011

Объявите переменную как список типа, от которого наследуются все эти элементы управления, который, я считаю, будет Control.После этого вы можете получить доступ ко всем членам (включая свойства), которые объявлены классом Control.

var MyControls = new List<Control>();
MyControls.Add(MyPicBox);
MyControls.Add(MyRadioButton);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...