строка form1 не передается в form2 - PullRequest
0 голосов
/ 28 января 2020

хочу, чтобы значение form1 pubId изменилось с form2. pubId всегда становится нулевым, не меняется. Как я могу решить эту проблему?

Код Form1:

public string pubId = string.Empty;

public void button1_Click(object sender, EventArgs e)
{
    try
    {
        form2 _frm2 = new form2();
        _frm2 .FormClosed += _frm2_FormClosed;
    }
    catch (Exception ex)
    {
        MessageBox.show(ex);
    }
}

private void _frm2_FormClosed(object sender, FormClosedEventArgs e)
{
    if (pubId == "8")
    {
       MessageBox.show("works");
    }
}

Код Form2:

public void buttonsend_Click(object sender, EventArgs e)
{      
    idfrm2 = "8";

    form1 _frm1 = new form1 ();                                          
    _frm1.pubId = _idfrm2;

    this.Close();
}

Ответы [ 2 ]

2 голосов
/ 28 января 2020

В этой строке вы создаете новую форму с новым пустым pubId.

form1 _frm1 = new form1 ();   

Просто создайте конструктор для form2, чтобы передать его. Например:

private string _pubId;
public form2(string pubId)
{
    _pubId = pubId;
}

Тогда вы можете использовать его:

form2 _frm2 = new form2(pubId);
1 голос
/ 28 января 2020

Вы можете сохранить ссылку на Form2 внутри Списка элементов управления, поддерживаемых Form1, и получить к нему доступ, как показано ниже:

Код Form1:

 public partial class Form1 : Form
{
    Form2 localfrm2;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {


            Form2 frm2 = new Form2();
            frm2.FormClosed += Frm2_FormClosed;

        localfrm2 = frm2;
            frm2.Show();

    }

    private void Frm2_FormClosed(object sender, FormClosedEventArgs e)
    {
        MessageBox.Show(localfrm2.PubId);
    }
}

Form 2 :

  public partial class Form2 : Form
{
    public string PubId { get; set; }

    public Form2()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        PubId = textBox1.Text;
    }
}

Upvote, если это решит вашу проблему

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