C# 在用户控件完全显示后显示消息框
我有一个从windows用户控件类派生的C# 在用户控件完全显示后显示消息框,c#,winforms,user-controls,messagebox,paintevent,C#,Winforms,User Controls,Messagebox,Paintevent,我有一个从windows用户控件类派生的控件窗体。一旦表单显示,我需要根据条件显示一个消息框。我试图使用表单绘制事件处理程序来完成此操作,但它似乎触发了两次。因此,消息框显示两次。如何做到这一点 public partial class SelectAccounts : UserControl { private void SelectAccounts_Paint(object sender, PaintEventArgs e) { MessageBox.Sho
控件窗体
。一旦表单显示,我需要根据条件显示一个消息框
。我试图使用表单绘制事件处理程序来完成此操作,但它似乎触发了两次。因此,消息框
显示两次。如何做到这一点
public partial class SelectAccounts : UserControl
{
private void SelectAccounts_Paint(object sender, PaintEventArgs e)
{
MessageBox.Show("something");
}
}
我已经删除了我以前的答案,您可以尝试下面的代码。
使用变量来记住是否加载了用户控件
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");
}
}
}
显示您尝试过的内容…VisibleChanged/OnVisibleChanged?@GregD我使用了Paint Event,然后移动了此项。\u show=true;在MessageBox.Show(“某物”)之前;公共类MyUserControl:UserControl{public event EventHandler已显示;public bool IsShown{get;private set;}public MyUserControl():base(){}受保护的重写void OnPaint(PaintEventArgs e){base.OnPaint(e);if(!IsShown){IsShown=true;if(show.IsNotNull()){show(this,e);}OnShown(this,e);}}}protected virtual void OnShown(object sender,EventArgs e){}