Как перенести значения из одной формы в другую? - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть 2 формы.Form1 создает форму Form следующим образом:

public partial class Form1 : Form
{
    private void button3_Click(object sender, EventArgs e)
    {
        Form2 AcqForm = new Form2();
        AcqForm.Show();
        string[] ret = AcqForm.fulldate;
        MessageBox.Show(ret[27]);
    }
}


public partial class Form2 : Form
{
    public string[] fulldate; //Created in form 2
    close();              //Need to get this string back on or before close event
}

Как мне поступить так?

Ответы [ 3 ]

1 голос
/ 05 февраля 2012

Вам необходимо обработать событие FormClosed экземпляра Form2 в первой форме и получить доступ к общим свойствам.

0 голосов
/ 05 февраля 2012

Если вы хотите, чтобы button3_Click дождался закрытия AcqForm, прежде чем получить доступ к fulldate, вам сначала нужно изменить AcqForm.Show(); на AcqForm. ShowDialog();. (Show() не ждет его закрытия.)

Что касается поля fulldate - оно будет доступно даже после закрытия формы, потому что форма все еще существует. Замечание SLaks о том, что это поле, означает, что у нас разные имена для разных типов переменных. То, что вы объявили в классе (без get и set), называется полем. Переменная в методе называется «переменной».

Если вы все еще хотите что-то сделать после закрытия AcqForm, сделайте следующее:

В конструкторе Form1, перед AcqForm. ShowDialog();:

AcqForm.FormClosing += AcqForm_FormClosing;

А в классе Form1:

void AcqForm_FormClosing(object sender, FormClosingEventArgs e)
{
    //Whatever will be here will be done when the form is closing.
    //Use 'FormClosed' for doing things AFTER the form has closed.
}
0 голосов
/ 05 февраля 2012

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

в Form1 :

using(Form2 form2 = new Form2()) 
{
  if(form2.ShowDialog() == DialogResult.OK) 
  {
    MessagBox.Show(form2.fulldate);
  }
}

В Form2 :

public partial class Form2 : Form
{
    public string[] fulldate {get; set;} // Create a Property

    void CloseForm()
    {
         fulldate = "valueToReturn";
         DialogResult = DialogResult.OK;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...