2014-01-23 33 views
0

我有一個control form來自windows用戶控件類。一旦顯示錶格,我需要根據條件顯示message box。我試圖使用form paint event handler來做到這一點,但似乎發射兩次。結果message box顯示兩次。如何才能做到這一點?在用戶控件完全顯示後顯示一個消息框

public partial class SelectAccounts : UserControl 
{ 
    private void SelectAccounts_Paint(object sender, PaintEventArgs e) 
    { 
     MessageBox.Show("something"); 
    } 
} 
+1

顯示您試過的東西... – Sandesh

+0

VisibleChanged/OnVisibleChanged? –

+0

@GregD我用Paint事件 – chenk

回答

2

我刪除了我以前的答案,您可以嘗試下面的代碼。 使用變量來記住用戶控件是否被加載。

public partial class SelectAccounts : UserControl 
    { 
     bool _Shown = false; 
     private void SelectAccounts_Paint(object sender, PaintEventArgs e) 
     { 
      if (!this._Shown) 
      { 
       this._Shown = true; 
       MessageBox.Show("something"); 
      } 
     } 
    } 
+0

然後把this._Shown = true; MessageBox.Show(「something」); – Jade

+0

是的,應該有效。謝謝。 – chenk

+0

公共類MyUserControl:用戶控件公共事件EventHandler顯示; public bool IsShown {get;私人設置; } public MyUserControl():base(){} protected override void OnPaint(PaintEventArgs e){ base.OnPaint(e);}如果(!IsShown){ IsShown = true; if(Shown.IsNotNull()){ 顯示(this,e); } OnShown(this,e); } } protected virtual void OnShown(object sender,EventArgs e){} } –