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. 我收到设计师抛出的以下错误...

设计师错误

我在这里做错了什么?

谢谢你的时间。


编辑。我似乎已经通过移动

this.VisibleChanged += new EventHandler(ResultsControl_VisibleChanged);

从构造函数到控件的 Load 事件。所以现在的问题变成了:这是一个有效的修复吗?

4

1 回答 1

1

在您设计时,您UserControl没有参考SqlEditorForm. 只有当您使用设计器或代码时,它的ParentForm属性才会变为。在此之前,IDE 只知道它是 Form 类型。你为什么不在里面实现你的事件处理程序?SqlEditorFormResultsControlSqlEditorFormResultsControl_VisibleChangedSqlEditorForm

于 2012-11-09T11:17:53.463 回答