2014-11-02 1 views
0

Я хотел бы знать, как увеличить окно основной формы после окончания таймера.увеличить окно после окончания таймера

Предположим, что окно сведено к минимуму при завершении таймера.

это, как я пытался его реализации:

private void timer1_Tick(object sender, ElapsedEventArgs e) 
     { 
    if (counter[int.Parse(timers[t].ToString())] <= 0) 
       { 
        ReadyIndex = int.Parse(timers[t].ToString()); 

        Invoke(new Action(() => { 
         this.WindowState = FormWindowState.Normal; 
         this.Show(); 
        })); 

        return; 
       } 
} 

Я пытался также сделать:

   Invoke(new Action(() => { 
        base.WindowState = FormWindowState.Normal; 
        base.Show(); 
       })); 

и:

  Invoke(new Action(() => { 
       thisForm.WindowState = FormWindowState.Normal; 
       thisForm.Show(); 
      })); 

В то время как "thisForm" переменная Form1 и я инициирую его в методе Form_Load следующим образом:

private Form1 thisForm; 
     private void Form1_Load(object sender, EventArgs e) 
     { 
       thisForm = new Form1(); 
     } 

Что мне здесь не хватает?

+0

Вы убедились в отладчике, что линия, которая должна максимизировать форму, фактически достигнута? – usr

+0

Я не дошел до Form1_SizeChanged, и я не знаю почему. – user2235615

+0

Тогда мы не можем вам помочь, потому что информации здесь недостаточно, чтобы узнать. Отладка программы. Это важное умение. – usr

ответ

0

Сделайте публичное логическое имя NowItsTime и установите для него значение false. Когда таймер запустит проверку if, проверьте, соответствует ли NowItsTime значение true, а else - если это не так.

Если его истинный код: - Установите максимальное состояние окна. - Остановите таймер.

Код Else: - Установить NowItsTime в true.

Вкратце объяснено: Он работает один раз и останавливается прямо на следующем прогоне.

0

Ok,

Я нашел решение:

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

private void timer1_Tick(object sender, ElapsedEventArgs e) 
     { 
    if (counter[int.Parse(timers[t].ToString())] <= 0) 
       { 
        ReadyIndex = int.Parse(timers[t].ToString()); 

        Invoke(new Action(() => { 
         this.Show(); 
         this.WindowState = FormWindowState.Normal; 

        })); 

        return; 
       } 
} 

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

У кого-то есть лучшее объяснение?

Благодарим за попытку.