Как закрыть другую форму с помощью флажка - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть 2 формы MainUI и Log

Я хочу закрыть Log из MainUI с помощью checkBox, но не могу понять, как это сделать.

Это мой код в MainUI:

public void checkBox4_CheckedChanged(object sender, EventArgs e)
{            
        if (checkBox4.Checked == true)
        {
            Log F2 = new Log();
            F2.Show();
        }
        else if (checkBox4.Checked == false)
        {
            //Here should the exit code be for the Log form.
        }
}

Журнал:

public partial class Log : Form
{       
    public Log()
    {         
        InitializeComponent();
    }
    private void Log_Load(object sender, EventArgs e)
    {
    }
    public void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
    }

}

Ответы [ 3 ]

0 голосов
/ 08 сентября 2018

Модифицируйте свою основную форму как эта

///Make it as global
Log F2 = null;

public void checkBox4_CheckedChanged(object sender, EventArgs e)
    {      

        if (checkBox4.Checked == true)
        {   
            if(F2 == null)
                {
                  F2=new Log();
                }
            F2.Show();
        }
        else if (checkBox4.Checked == false && F2 != null)
        { 
            F2.Hide();
            F2.Close();
            //Here should the exit code be for the Log form.
        }
}
0 голосов
/ 09 сентября 2018

Пост был решен, я сделал Log.Close (); вместо Log.Hide () ИСПРАВЛЕНО!

0 голосов
/ 08 сентября 2018

Для этого вам нужно сделать переменную видимой на уровне метода. переместите его за пределы блока if для этого:

public class MainUIForm : Form
{
  private Log F2  = null;

  public void checkBox4_CheckedChanged(object sender, EventArgs e)
  {      

      if (checkBox4.Checked)
      {
        F2 = new Log();
        F2.Show();
      }
      else
      {
        F2?.Close(); // for closing which will dispose it
      }
   }
}

Предполагается, что при установке флажка необходимо открыть новое свежее окно для Log и отменить предыдущее окно и его состояние.

Если окно журнала необходимо создать / создать один раз, и вам просто нужно показать его пользователю и спрятать в зависимости от того, установлен флажок или нет, вам потребуется изменить код следующим образом:

public class MainUIForm : Form
{
  private Log F2 = new Log();

  public void checkBox4_CheckedChanged(object sender, EventArgs e)
  {      

      checkBox4.Checked ?
        F2.Show() :
        F2.Hide();

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