2012-11-09 102 views
0

所有,我有一个自定义用户控件,它是使用单例模式调用的。这个控件可以被显示或隐藏,并且可以更新UI(提供一个显示/隐藏控制选项),我在控件构造函数中设置了一个事件处理程序。自定义控件事件处理程序问题

this.VisibleChanged += new EventHandler(ResultsControl_VisibleChanged); 

和事件处理程序是

void ResultsControl_VisibleChanged(object sender, EventArgs e) 
{ 
    // Get reference to Show/Hide button. 
    var showHideResults = ((SqlEditorForm)this.ParentForm).ShowHideResultsButton; 
    if (instance != null) 
     showHideResults.Enabled = true; 

    // Change the status. 
    showHideResults.Text = this.Visible ? 
     "&Hide Query Results" : 
     "&Show Query Results"; 
    showHideResults.Image = this.Visible ? 
     Properties.Resources.HideResultsVS201224 : 
     Properties.Resources.ShowResultsVS201224; 
} 

的问题是我得到的参考ShowHideResultsButton的方式。我正在从设计师抛出下面的错误...

DesignerError

我在做什么错在这里?

谢谢你的时间。


编辑。我似乎从构造到控件Load事件移动

this.VisibleChanged += new EventHandler(ResultsControl_VisibleChanged); 

已经解决了这一点。所以现在的问题是:这是一个有效的修复?

+0

您确定ResultsControl的父窗体是SqlEditorForm吗? –

+0

是的。这是应用程序的主要形式,整个应用程序只有两种形式。 – MoonKnight

+0

ResultsControl或其他表单上? –

回答

1

在您设计UserControl时,您没有提及SqlEditorForm。这是ParentForm财产将成为SqlEditorForm只有当你把你的ResultsControlSqlEditorForm使用设计师或代码。直到那时IDE才知道它是Form的类型。你为什么不在SqlEditorForm内实现你的ResultsControl_VisibleChanged事件处理程序?

+0

+1您的答案。最后,我使用desiger设置了可行的改变事件处理程序。我现在将测试这是否有效。谢谢你在这里的时间... – MoonKnight

相关问题