c # создание динамического текстового поля во второй форме

#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);