2013-11-19 3 views
1

Я думал, что это было бы юридическим заявлением, но, очевидно, нет. Как мне скрывать или отображать форму на основе этого?Как скрыть или отобразить форму в C#

TrainingEventAddTraineesSearchForm searchform = new TrainingEventAddTraineesSearchForm(context); 
if (searchform == null) 
    searchform.ShowDialog(); 
else 
    searchform.Visible = true; 
+2

searchform никогда не будет пустым, если вы создадите экземпляр прямо над оператором if. – paqogomez

+1

И даже если бы это было так, вы получите исключение NullPointerException, пытаясь показать его, когда оно равно null. – germi

+2

Какая ошибка или не работает? И что вы ожидаете? – Stefan

ответ

3

Хорошо, мой код Form1, которая имеет кнопку, которая показывает Form2:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     Form2 f2 = null; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void btnShowForm2_Click(object sender, EventArgs e) 
     { 
      if (f2 == null) { f2 = new Form2(); } 
      f2.Show(); 
     } 
    } 
} 

и пО для m2, я помещаю текстовое поле без событий (но его текст запоминается между скрытием и показом формы2), и у него есть кнопка, которая скрывает ее форму. вот код для формы 2:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      InitializeComponent(); 
     } 

     private void btnHideMe_Click(object sender, EventArgs e) 
     { 
      this.Hide(); 
     } 
    } 
} 
+0

@ Edaward, но, как вы видите здесь, я передаю контекст моей сущности до TrainingEventAddTraineesSearchForm searchform = new TrainingEventAddTraineesSearchForm (контекст); – rogue39nin

+0

Мне нужно передать этот объект контекста, который является declaire в форме load handler – rogue39nin

+0

. Хорошо, я изменил свой код, чтобы создать форму в событии кнопки. но обратите внимание, что я все равно должен объявить свою переменную 'f2' вне метода кнопки, чтобы она не была забыта. поэтому вы были близки к оригиналу, тестируя его на нуль. :), но вам нужно объявить переменную в области формы, а не внутри метода. мой код показывает полный исходный код, как это делается. :) Счастливое кодирование, @DavidB! – Edward

6

, чтобы показать или скрыть форму Windows, вы используете Show() или Hide() методы, например: searchform.Show(); или searchform.Hide();

Вы можете рассмотреть этот код:

TrainingEventAddTraineesSearchForm searchform = new TrainingEventAddTraineesSearchForm(context); 
if (searchform.Visible == false) 
{ searchform.Show(); } 
else 
{ searchform.Hide(); } 
+0

Я вызываю форму, затем на кнопке закрытия второй формы, вызывающей hide(), я бы назвал ее так, чтобы форма запоминала значения элементов управления – rogue39nin

+0

, если вы хотите, чтобы второй чтобы скрыть себя, вы можете захотеть поймать событие Закрытие(), а не событие Close(). Затем в событии Closing() просто скройте форму * и * отмените закрывающее событие (с помощью 'e.Cancel = true', где 'e' является переменной' FormClosingEventArgs'. Это предотвращает ее действительно закрытие, а просто скрывает ее Затем, когда вы переустановите его, он должен запомнить все. Это первое, что я попробую. :) – Edward

+0

вы можете показать пример в правильном ответе plz; -_ – rogue39nin

Смежные вопросы