Как создать элемент управления в приложении формы Windows? Я хочу создать текстовое поле или переключатель, когда я выберу что-то из Combobox. Я в основном хочу запросить мою базу данных и на основе значений полей хочу создать текстовое поле или переключатель. Например, если мой запрос возвращает значение «Текстовое поле», я хочу сгенерировать текстовое поле в форме в указанном месте. Как это можно сделать? Пожалуйста помоги.Создание или создание элемента управления на основе результатов базы данных
ответ
Самый простой способ - создать управление вручную в коде, а затем добавить его в коллекцию 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;
Надеется, что проясняет вопрос и устанавливают некоторую отправную точку для вас, чтобы продолжить с.
Итак, вы хотите сгенерировать элемент управления на основе выбора combobox или в результате запроса к базе данных? – PiotrWolkowski