2015-05-20 2 views
0

Я пытаюсь манипулировать PictureBox (pBATalk), чтобы показывать, когда я закрываю форму (PAInput). Поэтому в основном я хочу показать картинку, когда вторая форма закрыта.Управление манипулятором на другой форме

второй Форма

 public void PAInput_FormClosing(object sender, FormClosingEventArgs e) 
     { 
      this.Hide(); 
      fPAMain.PATalkActive(false); 
      e.Cancel = true; 
     } 

MainForm:

public void PATalkActive(bool active) 
    { 
      //MessageBox.Show(""); 
     if (active == true) 
     { 
      pBPATalk.Hide(); 
     } 
     if (active == false) 
     { 
      pBPATalk.Show(); 
     } 
    } 

Всякий раз, когда я закрываю PAInput это вызовет PATalkActive, но только огонь MessageBox.Show("");, а не pBATalk.Hide(); или pBATalk.Show();

+0

Извините, что требовалось, чтобы это было видно. Проследили ли вы код, разместив точки останова на pBPATalk.Show(), чтобы узнать, достигнут ли этот код? Если это так, вы вручную сделали управление видимым? Вы пробовали this.Refresh() после оператора Show(), чтобы заставить вашу форму перерисовывать? – Spevy

+0

@Spevy Я тоже подумал об этом, но к сожалению это было не так. Странно, что он «использует» код, который доступен только для чтения/чтения. Я подозреваю, что это может быть вопросом разрешения. –

ответ

0

Ну, я не настолько уверен в том, что вы пытаетесь выполнить здесь, но в первую очередь вы держите PAInput открытым, с этой строкой e.Cancel = true. Кроме того, MessageBox.Show (""); откроет модальное окно, отображающее текст, пока он не будет закрыт, остальная часть метода не будет запущена.

+0

Цель «MessageBox» - проверить, был ли код получен с момента его вызова, размещение самого кода не так важно, так как это просто проверить, используется ли он. Кроме того, я только что отключил 'e.Cancel', и код все равно не скроет или не покажет' pBPATalk'. @zalomon –

+0

@BRO_THOM Не используйте MessageBox для отладки, поскольку он может мешать другим процессам. Используйте debug break или Debug.WriteLine и т. Д. – LarsTech

+0

@LarsTech, я просто использовал 'Debugger.Break();' в 'if (active == false)' code, и он действительно сломался, поэтому я могу предположить, что это будет достигли кода. В то же время я также использовал '((PictureBox) (this.UserControlPanel.Controls [0])). Show();' добавить к кадру (я только что протестировал это, и он достиг имени элемента управления, поэтому он настроен должным образом). Это тоже не сработало. –

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