2017-01-21 11 views
1

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

Вот сценарий:

У меня есть Panel управления. внутри на моей панели есть много контроля, например, Textbox, Combobox и DateEdit.

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

panel.Controls.Cast<Control>() 
      .Where(c => c is TextBox || c is DateEdit || c is ComboBox) 
      .OrderBy(or => or.Name) 
      .Where(t => !string.IsNullOrEmpty(t.Text)) 

результат был успешным, я должен принести элементы управления, где типы Textbox, dateedit и выпадающий затем iv'e сортируется по возрастанию с помощью управляющего имени, а затем фильтруется с помощью управления, имеет значение ...

Теперь вот мой вопрос: существует ли какой-либо простой способ отделить типы контроля? Потому что я хотел бы поставить все значение данных в List ведьмы объект

public class Child 
{ 
    public TextBox ChildName { get; set; } 
    public ComboBox ChildType { get; set; } 
    public DateEdit ChildBirth { get; set; } 
} 

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

Благодаря

+0

Какова связь, которая держит вместе 3 управления и сделать их объект типа Child? Я имею в виду, если у вас есть 2 TextBoxes, 2 Comboboxes, 2 DateEdit (?), Как вы определяете правило, которое помещает 3 элемента управления в элемент типа Chiild и следующие 3 в другом элементе? – Steve

+0

@Steve вот что это выглядит: https://i.imgsafe.org/31df1ab453.png У меня есть множество элементов управления, и я ищу самый простой способ получить все свое значение, чтобы я мог просто закодировать его для вставки в базу данных .. их имя было последовательным, например txtName1, txtName2, cbType1, cbType2, Date1, Date2 и так далее и т. Д. ... – mardagz

+0

с использованием форм для Windows? –

ответ

0

Вы можете сделать это в MainPanel добавить несколько панелей с элементами управления для дочернего объекта, и вы можете получить контроль как этот

 foreach (Control obj in MainPanel.Controls) 
     { 
      var panel = (Panel)obj; 
      TextBox tb = (TextBox)panel.Controls[0]; 
      ComboBox cb = (ComboBox)panel.Controls[1]; 
      DateEdit de = (DateEdit)panel.Controls[2]; 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^