Совместное использование переменной между двумя winforms - PullRequest
0 голосов
/ 24 августа 2010

У меня есть приложение winforms.

У меня есть текстовое поле в одной форме (вызов F1), и когда кнопка нажимается в этой форме (вызов F2), она запускает другую форму.

На F2 я хочу установить строку через текстовое поле (и сохранить ее в переменной в классе), а затем, когда я закрою эту форму, строка появится в метке в F1.

Так что я в основном разделяю переменные между обеими формами. Однако я не могу заставить это работать правильно. Как будет выглядеть этот код?

Ответы [ 3 ]

4 голосов
/ 24 августа 2010

Я бы добавил новое свойство в form2. Скажи, что это для номера телефона. Затем я добавляю свойство друга m_phone () в виде строки в форму 2. После показа экземпляра формы form2, но перед его закрытием, вы можете обратиться к свойству m_phone в коде form1.

Это дополнительный уровень косвенности от решения Мэтью Эбботта. Он не отображает элементы управления пользовательского интерфейса form2 для form1.

EDIT

например:.

public string StoredText
{
    get;
    private set;
}

внутри набора вы можете ссылаться на свой элемент управления UI, например, возвращать textBox1.text. Используйте get для установки значения текстового поля из более ранней загрузки.

И

public string GetSomeValue()
{
    var form = new F2();
    form.ShowDialog();

    return form.StoredText;
}

Просто убедитесь, что StoredText заполнено (или нет, если необходимо), прежде чем форма будет закрыта.

3 голосов
/ 24 августа 2010

Показываете ли вы вторую форму в виде диалога, это, вероятно, лучший способ сделать это. Если вы можете избежать использования общих переменных, вы можете сделать следующее:

public string GetSomeValue()
{
    var form = new F2();
    form.ShowDialog();

    return form.TextBox1.Text;
}

и вызывается в коде:

Label1.Text = GetSomeValue();
0 голосов
/ 12 июня 2012

Возможно, это не самый эффективный способ приближения, но вы можете создать класс с именем DB (база данных).Внутри этого класса создайте переменные типа

public static bool test или public static bool[] test = new bool[5];

. В других ваших формах вы можете просто создать экземпляр.DB db = new DB(); затем получите информацию, используя db.test = true/false.Это то, что я делал, и это прекрасно работает.

Извините, я только на год опоздал.

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