C # WinForms - Как я могу получить данные из текстового поля на одной форме через другую форму? - PullRequest
1 голос
/ 06 мая 2009

У меня есть метод, который выполняется внутри одной формы, но мне нужно извлечь данные из другой формы для передачи в метод.

Какой лучший способ сделать это?

Ответы [ 5 ]

2 голосов
/ 06 мая 2009

Вы можете выставить свойство в одной форме и вызвать его из другой. Конечно, вам понадобится какой-нибудь способ получить экземпляр form1. Вы можете сохранить его как статическое свойство в классе программы или в другом родительском классе. Обычно в этом случае у меня есть статический класс приложения, который содержит экземпляр.

public static class Application
{
public static MyForm MyFormInstance { get; set; }
}

Затем, когда вы запускаете первую форму, присвойте свойству MyFormInstance приложения экземпляр первой формы.

MyForm instance = new MyForm();
Application.MyFormInstance = instance;

Добавить свойство во вторую форму.

public String MyText
{ get { return textbox1.Text; }
  set { textbox1.Text = value; }
}

И тогда вы можете получить к нему доступ со своей второй формы с помощью:

Application.MyFormInstance.MyText
1 голос
/ 06 мая 2009

Есть похожий пост здесь

Видео ниже прояснит многие ваши концепции о передаче данных между двумя формами.

Существует несколько способов передачи данных между двумя формами, проверьте эти ссылки, на которых есть примеры видео для этого

НТН

1 голос
/ 06 мая 2009

В форме, в которой есть текстовое поле, из которого вам нужны данные, предоставьте свойство или метод, который возвращает текст. IE:

internal string TextBoxTest
{
   get{ return this.textBox1.Text;}
}
0 голосов
/ 06 мая 2009

Предполагая, что formB инициализируется в formA, я бы рекомендовал добавить строку в конструктор formB, отправив Texbox1.Text

как в

class formB: Form{
   private string data;
   public formB(string data)
    {
        InitializeComponent();
        this.data = data;
    }
  //rest of your code for the class

}
0 голосов
/ 06 мая 2009

Не делай этого.

Более длинная версия: почему ваше представление напрямую взаимодействует с другим представлением?

Гораздо длиннее версия:

Вместо того, чтобы делать публичное свойство, которое выставляет поле, оно обеспечило бы лучшую инкапсуляцию и изоляцию от изменений, если форма с полем интереса взаимодействовала с некоторой формой объекта данных, который затем передавался заинтересованному методу. *

Местоположение заинтересованного метода должно быть тщательно продумано - если он контролирует аспекты представления (WinForm, в вашем случае), то он может быть соответствующим образом членом этого класса - если нет, возможно, его реальный дом находится в объект данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...