Member 13409327 Ответов: 1

C# перечисление всех созданных форм windows и имен кнопок в проекте


Я хочу перечислить все созданные формы windows и названия кнопок в проекте в listbox1. Пожалуйста, помогите мне

Что я уже пробовал:

private void tumekranlar_Load(object sender, EventArgs e)
{
   var c = GetAll(this, typeof(Button));

   listBox1.Items.Add(c.Count().ToString());
}

public IEnumerable<control> GetAll(Control control, Type type)
{
   var controls = control.Controls.Cast<control>();

   return controls.SelectMany(ctrl => GetAll(ctrl, type))
                                      .Concat(controls)
                                      .Where(c => c.GetType() == type);
}

1 Ответов

Рейтинг:
1

jekin77

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

public List<T> FindControls<T>(Control control) where T : Control
{    
     var controls = control.Controls.Cast<Control>();
     return controls.SelectMany(ctrl => FindControls<T>(ctrl))
                    .Concat(controls)
                    .Where(c => c.GetType() == typeof(T))
                    .Cast<T>()
                    .ToList();
}

таким образом вы вызываете функцию:
List<Button> list = FindControls<Button>(this);
MessageBox.Show("Total Buttons: " + list.Count);


вы действительно добавили в список элементов только одно-значение count .
Итак, вам нужно добавить список имен кнопок в виде List & lt;string & gt; like:

listBox1.Items.AddRange(list.Select(s => s.Name).ToList());


Graeme_Grant

5 б