【发布时间】:2012-10-29 16:52:06
【问题描述】:
所有,我有一个使用单例模式调用的自定义用户控件。这个控件可以显示或隐藏,并更新 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 事件。所以现在的问题变成了:这是一个有效的修复吗?
【问题讨论】:
-
你确定ResultsControl的父窗体是SqlEditorForm吗?
-
是的。这是应用的主要形式,整个应用只有两种形式。
-
ResultsControl 是在它上面还是在另一个窗体上?
-
在我引用
SqlEditorForm的表格上。我相信它是在运行时动态添加的,因此您在下面的回答是有意义的。但是,它现在在 Load 事件中连接时可以工作是没有意义的。 -
Form_Load 事件在表单构造函数之后执行,因此在 InitializeComponent 调用之后,它将 ParentForm 属性设置为 SqlEditorForm 的适当实例。
标签: c# winforms exception custom-controls designer