全部,我有一个使用单例模式调用的自定义用户控件。可以显示或隐藏此控件并更新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事件。所以问题现在变成:这是一个有效的修复方法吗?
答案 0 :(得分:1)
在您设计UserControl
时,您没有SqlEditorForm
的引用。只有当您使用设计师或代码将ParentForm
放在SqlEditorForm
上时,ResultsControl
属性才会变为SqlEditorForm
。在此之前IDE只知道它是Form类型。为什么不在ResultsControl_VisibleChanged
中实施您的SqlEditorForm
事件处理程序?