2015-05-20 48 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()中放置斷點來查看代碼是否已達到?如果是這樣,你是否已經手動使控件可見?你有沒有在Show()語句之後嘗試使用this.Refresh()來強制重繪表單? – Spevy

+0

@Spevy我也想到了這一點,但不幸的是,情況並非如此。奇怪的是它「使用」了只讀或只讀的代碼。我懷疑這可能是許可的事情。 –

回答

0

嗯,我不太確定你想在這裏完成什麼,但首先你要保持PAInput打開,用這行e.Cancel = true。除此之外,MessageBox.Show(「」);將打開一個顯示文本的模式窗口,直到它關閉,該方法的其餘部分將不會運行。

+0

了'MessageBox'的目的是測試如果代碼是從目前它被要求達到的代碼本身的位置並不重要,因爲它只是爲了驗證它是否使用。 另外,我剛剛禁用了'e.Cancel'和代碼仍然不會隱藏或顯示'pBPATalk'。 @zalomon –

+0

@BRO_THOM不要使用MessageBox進行調試,因爲它可能會干擾其他進程。使用調試中斷或的Debug.WriteLine等 – LarsTech

+0

@LarsTech,我只是用一個'Debugger.Break();'的'如果(主動==假)'代碼和它沒有休息,所以我相信它會已經達到了代碼。在此期間我還用'((圖片框)(this.UserControlPanel.Controls [0]))顯示();'追加到PictureBox的(我只是測試這一點,它達到了控制的名字,所以它的配置正確)。那也行不通。 –