Как создать и отобразить выходные данные во второй форме

#c# #visual-studio

#c# #visual-studio

Вопрос:

Я хочу создать вторую форму «на лету» и отобразить результаты из переменных в основной форме в виде метки во второй форме. Пожалуйста, как мне это сделать? Спасибо

Ответ №1:

Я чувствую, что здесь есть несколько вопросов.

Как открыть новую форму: в каком-либо методе Form1 добавьте следующий код:

 Form2 form2 = new Form2();
form2.ShowDialog();
  

Как передавать значения из Form1 в Form2 : передавайте их при вызове Form2 конструктора:

 Form2 form2 = new Form2(String value, Boolean isDone);
  

И Form2 конструктор должен выглядеть следующим образом:

 public Form2(String form1Value, Boolean form1IsDone) {
    label1.Text = form1Value;
    label2.Text = form1IsDone;
}
  

Ответ №2:

 Form newForm = new Form();
TextBox tb = new TextBox();
tb.ReadOnly = true;
tb.Multiline = true;
tb.Dock = DockStyle.Fill;

tb.Text = "One and"   Environment.NewLine   "two lines of text";

newForm.Controls.Add(tb);
newForm.ShowDialog();
  

Замените TextBox на Label или как вам угодно.
Но если вам не нужно каждый раз динамически генерировать макет новой формы, вам действительно следует создать новую форму в Visual Studio designer и открыть эту форму, передав свойства содержимого этой форме.

 Form2 form2 = new Form2();
form2.SetContent("One and"   Environment.NewLine   "two lines of text");
form2.ShowDialog();
  

где SetContent — открытый метод, который вы создаете в Form2 классе. SetContent Метод должен вводить текст соответствующих меток и т.д.

Комментарии:

1. ДА. Вы также могли бы передать содержимое и другую информацию конструктору формы и позволить форме решать, как создавать себя динамически, в зависимости от информации.

Ответ №3:

Вы можете сделать это следующим образом:

 var form = new Form
{
    Owner = this
};
var label = new Label
{
    Text = "Hello"
};
form.Controls.Add(label);
form.Show();
  

Конечно, вам придется еще немного поработать над версткой, но это всего лишь пример того, «как это происходит».

Комментарии:

1. ShowDialog является модальным, что означает, что вы должны закрыть форму, прежде чем делать что-либо еще. Show не является, что означает, что вы можете использовать обе формы одновременно и намеренно переключать фокус между ними. Но в обоих случаях вы должны передать первую форму в качестве параметра, который указывает владельца формы. SecondForm.Show(первая форма);. Это гарантирует, что вторая форма всегда находится поверх первой и что она не может исчезнуть за первой, особенно если она меньше первой.

2. @OlivierJacot-Decombes Лучше настроить владельца на инициализацию. Я забыл это и исправил.

3. Вы устанавливаете владельца метки. Я говорю о настройке владельца вновь созданной формы.

4. @OlivierJacot-Decombes: Вы так правы, а я так слеп. 🙂 Я исправил это.