2010-05-28 5 views
1

В моей текущей программе у меня есть главное окно и дополнительное окно, которое появляется при нажатии кнопки. Если вторичное окно отображается в данный момент, но не имеет фокуса, кнопка вместо этого будет фокусироваться.Проверьте, не был ли запущен класс

В это время я создаю новый экземпляр вторичного окна в качестве главного окна нагрузок и просто проверяя свой статус с SubWindow.IsDisposed и SubWindow.CanFocus

Я обнаружил, что если я не создаю новый экземпляр в начале SubWindow.IsDisposed выдает исключение. Пока я ранее создавал экземпляр SubWindow, проверка работает нормально.

Мой вопрос: текущая версия работает нормально, но есть ли лучший способ сделать это? Это не вызывает большого беспокойства, но, похоже, было бы лучше иметь возможность проверять существование, не гарантируя, что оно существует, по крайней мере, один раз.

+3

Почему это было проголосовано даже без комментариев? – AlwaysAProgrammer

+0

какая у вас платформа? выиграть формы? МОФ? –

+0

Я использую Win Forms – Holman716

ответ

4

Вы можете сделать проверку на SubWindow, чтобы узнать, является ли она нулевой. Если это случай, тогда создайте экземпляр SubWindow, иначе он будет существовать.

1

VoodooChild получил меня на правильном пути. (SubWindow == null) возвращает false, хотя, когда окно открылось один раз и затем было закрыто.

В настоящее время с помощью

(SubWindow == null || SubWindow.IsDisposed) 

, который работает во всех случаях до сих пор.

0

Внедрение второго окна с использованием одноэлементного шаблона.


public class SecondForm : Form 
{ 
     public static m_myInstance= new SecondForm(); 
     public static bool m_visible = false; 

     public SecondForm() 
     { 
       InitializeComponent()    
     } 

     public SecondForm Instance() 
     { 
      return m_myInstance; 
     } 

     public static void Show() 
     { 
      ... 
     } 

} 
1

У вас может быть свойство static counter в вашем классе. Приращение при создании, уменьшение на удаление. Это вообще ... в вашем случае вам лучше следовать советам VoodooChild.

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