2015-02-12 3 views
0

Как создать элемент управления в приложении формы Windows? Я хочу создать текстовое поле или переключатель, когда я выберу что-то из Combobox. Я в основном хочу запросить мою базу данных и на основе значений полей хочу создать текстовое поле или переключатель. Например, если мой запрос возвращает значение «Текстовое поле», я хочу сгенерировать текстовое поле в форме в указанном месте. Как это можно сделать? Пожалуйста помоги.Создание или создание элемента управления на основе результатов базы данных

+0

Итак, вы хотите сгенерировать элемент управления на основе выбора combobox или в результате запроса к базе данных? – PiotrWolkowski

ответ

0

Самый простой способ - создать управление вручную в коде, а затем добавить его в коллекцию Controls. Решение о том, какой элемент управления создается в зависимости от некоторых входных данных (будь то запрос к базе данных или значение, выбранное из поля со списком), не так сильно отличается от любого другого случая. Простой if выполнит эту работу. Например:

private void AddControl(string control) 
    { 
     if (control == "Textbox") 
     { 
      TextBox tb = new TextBox(); 
      tb.Location = new Point(100, 100); 
      this.Controls.Add(tb); 
     } 
     else if (control == "Radio") 
     { 
      RadioButton rb = new RadioButton(); 
      rb.Location = new Point(200, 100); 
      this.Controls.Add(rb); 
     } 
    } 

Конечно, это очень наивная версия. Но это только отправная точка. Я оставляю вам добавить больше передовой логики (например, динамически регулируя расположение, настройка свойств радио-кнопки или текстового поля, опираясь на Type, а не на простом string и т.д.)

Предполагается, что вы извлечь string значение из базы данных. Например, в конструкторе формы:

public Form1() 
    { 
     InitializeComponent(); 

     string requestedControl = QueryDatabase(); 

     AddControl(requestedControl); 
    } 

Я оставляю вам реализацию метода запроса к базе данных.

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

private void comboBox1_SelectedValueChanged(object sender, EventArgs e) 
    { 
     string res = this.comboBox1.SelectedItem.ToString(); 
     this.AddControl(res); 
    } 

Здесь вы полагаетесь на SelectedValueChanged события. Конечно, в этом случае ваш combobox должен быть заполнен ожидаемыми значениями (здесь «Радио» и «Текстовое поле»). Кроме того, вы должны прикрепить обработчик события к конкретному событию в поле со списком. Вы можете сделать это в конструкторе или путем добавления в конструкторе следующей строки:

combobox1.SelectedValueChanged += comboBox1_SelectedValueChanged; 

Надеется, что проясняет вопрос и устанавливают некоторую отправную точку для вас, чтобы продолжить с.