получение значения текстового поля из другой формы - PullRequest
1 голос
/ 09 ноября 2011

У меня есть TextBox с именем pass в Form1, для которого мне нужно получить значение в form2.Я пробовал это:

public partial class Form1 : Form {
    public string GetPass() {
        return pass.Text; 
    }
}

public partial class form2 : Form {
    //... 
    MessageBox.Show(new Form1().GetPass());
}

Приведенный выше код возвращает пустую строку, почему?

Ответы [ 6 ]

3 голосов
/ 09 ноября 2011

Вы не показываете свой реальный код, о чем свидетельствуют синтаксические ошибки и т. Д. - единственное логическое объяснение вашей проблемы состоит в том, что вы неправильно передаете ссылку на Form1 на Form2, а вместо этого создаете новую форму- эта новая форма будет иметь пустое текстовое поле.

Для дальнейшей помощи, пожалуйста, покажите, как вы передаете ссылку на форму Form1 в свой фактический код.

См. Ваше редактирование сейчас и выше, это именно проблема.Вы должны передать экземпляр Form1 в form2 вместо создания нового, то есть:

public partial class form2 : Form 
{
  private Form1 form1;

  public form2(Form1 otherForm)
  {
     form1 = otherForm;
  }

  public void Foo()
  {
     MessageBox.Show(form1.GetPass());
  }
}
2 голосов
/ 10 ноября 2011

Определить одну строковую переменную как Public в разделе объявлений например у нас есть форма с именем "frmOne"

публичная строка strVar = string.Empty;

Теперь присвойте значение TextBox «frmOne» этой переменной, откуда вы получаете значение Textbox.

например

strVar = Textbox1.Text.ToString();

Теперь в другой форме, скажем «frmTwo», вы получите доступ к значению этого текстового поля «frmOne» примерно так (где вы хотите получить значение):

frmOne frm = new frmOne();
string strValue = frm.strVar;       

Итак, наконец, локальная переменная strValue для frmTwo содержит значение Textbox для frmOne.

0 голосов
/ 10 ноября 2014

привет, вы можете написать это:

 public partial class Form1: Form
{
    public Form1()
    {
        InitializeComponent();
    }
        internal Form2 F2=new form2();

            private void CommandBarButton1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(f2.TextBox1.Text);

    }

}
0 голосов
/ 09 ноября 2011

Он возвращается пустым, потому что вы создаете новый экземпляр формы. Предполагая, что Form1 уже где-то открыт, вам нужно извлечь существующий экземпляр Form1 и извлечь значение оттуда.

0 голосов
/ 09 ноября 2011

Вы создаете НОВУЮ форму1, где текстовое поле, вероятно, будет пустым, и вызываете GetPass () для этой пустой формы.Вам нужен экземпляр уже открытой формы1, где текстовое поле может иметь значение.

0 голосов
/ 09 ноября 2011

Поскольку вы создаете новый экземпляр Form1 каждый раз, когда вызываете GetPass().

Вам нужно так или иначе получить экземпляр открытого form1 и вызвать на нем GetPass:

form1.GetPass();

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

foreach (Form openedForm in Application.OpenForms) {
    if (openedForm.GetType() == Form1) {
        MessageBox.Show(openedForm.GetPass());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...