Как получить список моих собственных созданных USERCONTROLs - PullRequest
0 голосов
/ 10 апреля 2020

Я создал два элемента UserControls в своем приложении WinFroms. Будет создано еще несколько пользовательских элементов управления.

Теперь я хочу получить список созданных пользовательских элементов управления по имени.

Например:

UserControl ctrl1

UserControl ctrl2

UserControl ctrl3

UserControls создаются следующим образом:

namespace Test.Controlls
{
    public partial class ctrl1 : UserControl
    {

В моем приложении WinForms оно будет включено следующим образом:

 public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            contrctrl1.Visible = true;
            contrctrl1.BringToFront();

Теперь я не хочу, чтобы имена ctrl1, ctrl2 и ctrl3 в списке выводились через l oop через него.

Примерно так:

List<> ctrllist = new List<>();
ctrllist.Add();

for (int i =0; <ctrllist>.count; i++)
{ 
   switch (ctrllist.toString())
   {
     case "ctrl1": //do seomething
               break;
     case "ctrl2": //do seomething
               break;
     case "ctrl2": //do seomething
               break;
   }    
}

Пожалуйста, помогите мне найти решение.

Спасибо.

РЕДАКТИРОВАТЬ: я не хочу знать текстовое поле, кнопки управления и т. Д. c. Я создал собственный UserControl «Форма» и хочу сохранить эти имена в списке или в виде данных, чтобы получить имена в случае необходимости.

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Если вы хотите просмотреть все пользовательские элементы управления ctrl1, вы можете обратиться к следующему коду.

List<ctrl1> ctrl1s = new List<ctrl1>();

private void btnGetAllCtrl_Click(object sender, EventArgs e)
{
    foreach(Control control in this.Controls)
    {
        if (control is ctrl1)
        {
            ctrl1s.Add((ctrl1)control);
        }
    }
}

И затем просмотреть список ctrl1.

private void btnTraverse_Click(object sender, EventArgs e)
{
    foreach (ctrl1 c in ctrl1s)
    {
        Console.WriteLine(c.Name);
    }
}
1 голос
/ 10 апреля 2020

Поскольку все элементы управления будут частью вашего mainform элемента управления, вы можете получить все дочерние элементы этого и l oop через него.

Доступ к Mainform.Controls ( документам ) вероятно не будет достаточно, вам нужно копать глубже. проверьте, как это сделать:

Как получить ВСЕ дочерние элементы управления формой Windows указанного типа c (кнопка / текстовое поле)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...