Запретить "обновление" начальной формы при запуске подчиненной формы - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть следующий (уточненный) код:

Form1

public partial class Form1 : Form
{
    GetIP getIP;
    string deviceIP = "";

    public Form1()
    {
        InitializeComponent();

        if (deviceIP == "") 
        {
            getIP = new GetIP();
            var result = getIP.ShowDialog();
            if (result == DialogResult.OK)
            {
                string ip = getIP.IPAddress;
                deviceIP = ip;
            }
        }
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        form2 = new Form2();
        form2.ShowDialog();
    }
}

GetIP

public partial class GetIP : Form
{
    public string IPAddress { get; set; }
    public GetIP()
    {
        InitializeComponent();
    }

    private void btnConnect_Click(object sender, EventArgs e)
    {
        IPAddress = txtIPAddress.Text;
        DialogResult = DialogResult.OK;
        Close();
    }
}

Form2

public partial class Form2 : Form
{
    Form1 form1 = new Form1(); // oops...this might be it?

    public Form2(string deviceData)
    {
        InitializeComponent();
        // Force CRLF (\r\n) on all newline instances
        deviceData = deviceData.Replace("\r\n", "\n");
        deviceData = deviceData.Replace("\r", "\n"); 
        deviceData = deviceData.Replace("\n", "\r\n");
        txtdeviceData.Text = deviceData;
    }

    private void btnClose_Click(object sender, EventArgs e)
    {
        Close();
    }
}

Моя проблема заключается в том, что всякий раз, когда Form2 пытается открыть, Form1, кажется, обновляется.Это приводит к повторному запуску GetIP (что также означает, что deviceIP был повторно инициализирован обратно в "").Form2 не открывается до тех пор, пока не будет завершено GetIP.

Проверка на deviceIP == "" была моей попыткой решения проблемы, но, похоже, инициализация переменной также выполняется повторно, что сводит на нет мойcheck.

Есть ли способ предотвратить обновление Form1 или, по крайней мере, способ предотвратить повторный запуск GetIP?

Обновление
Хм, я только что заметил, что у меня есть то, что кажется остатком строки кода, которая создает Form1 экземпляр ...

1 Ответ

0 голосов
/ 07 февраля 2019
public partial class Form2 : Form
{
    Form1 form1 = new Form1(); // oops...this might be it?

Да, это "упс".

Если для Form2 требуется ссылка на Form1, попробуйте передать ее через конструктор:

public partial class Form2 : Form
{
  Form1 form1 = null;

  public Form2(Form1 f1, string deviceData) {
    InitializeComponent();
    form1 = f1;
    // etc, etc.
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...