#c# #forms #textbox
#c# #формы #текстовое поле
Вопрос:
Я пытаюсь написать код для создания динамических текстовых полей.
У меня есть класс функций, и в моей программе есть вторая форма с именем ProductForm.cs
Что я хочу сделать, так это прочитать некоторые данные с помощью функции, названной GetSpecs
в моем Function.cs
, а затем внутри GetSpecs
Я хочу вызвать функцию в другом классе и отправить данные в мою другую функцию в разделе ProductForm.cs
class.
В конце я получаю пустую форму.
часть моей GetSpecs
функции:
private String GetSpecs(String webData)
{
......
ProductForm form2 = new ProductForm();
form2.CreateTextBox(n);
}
ProductForm.cs
public void CreateTextBox(int i)
{
ProductForm form2 = new ProductForm();
form2.Visible = true;
form2.Activate();
int x = 10;
int y = 10;
int width = 100;
int height = 20;
for (int n = 0; n < i; n )
{
for (int row = 0; row < 4; row )
{
String name = "txtBox_" row.ToString();
TextBox tb = new TextBox();
tb.Name = name;
tb.Location = new Point(x, y);
tb.Height = height;
tb.Width = width row * 2;
x = 25 row * 2;
this.Controls.Add(tb);
}
y = 25;
}
}
Я получаю пустую форму ProductForm. Текстовые поля не создаются или я их не вижу.
Если я помещу текстовое поле внутрь
private void ProductForm_Load(object sender, EventArgs e)
Я вижу текстовые поля.
Ответ №1:
Вы создаете отображение совершенно нового ProductForm
экземпляра (в form2
переменной), затем добавляете элементы управления this
(которые никогда не отображаются).
Комментарии:
1. 1 — вам нужен другой экземпляр формы. Кстати, нехорошо, когда компоненты пользовательского интерфейса используют другие компоненты пользовательского интерфейса. Это создает связь. @Val: почитайте о MVC.
2. Большое спасибо всем вам. Вы объяснили это довольно хорошо. Я виноват, что не вижу этой ошибки. Вы все мои супер герои, ребята.
Ответ №2:
Вы добавляете элементы управления в текущую форму: this.Controls.Add(tb);
, вам нужно добавить их в другую форму:
form2.Controls.Add(tb);