在自定义用户控件中重定向按钮单击时出现设计器错误
Designer error when redirecting a button click within a custom user control
我创建了一个自定义用户控件,它本质上是我的 windows 表单应用程序中的一个自定义按钮。我使用以下代码管理了点击事件的重定向:
Control[] customButtonControls = button.Controls.Find("buttonInUserControl", false);
Button nestedButton = (Button)customButtonControls[0];
nestedButton.Click += new System.EventHandler(this.button_click_handling_function);
我已将此附加到 Window_Name.Designer.cs 文件中生成的控件代码下方,我的 button_click_handling_function
在我的 Window_Name.cs 文件中定义。
问题是,当我单击返回 Window_Name.cs[设计] 页面时,我遇到了一个错误页面。我将包括屏幕截图以更好地显示错误。基本上这是一个超级无用的页面。它告诉我我的数组出现索引超出范围错误,但堆栈调用没有任何意义。
如果我尝试构建我的解决方案,我没有遇到任何编译错误,并且我的程序完全按预期运行。点击事件像以前一样触发函数。
提前致谢。
部分设计器代码在 design-time 运行。索引超出范围错误可能是因为在 design-time 处,该 Find 调用尚未找到控件,因此数组为空。您没有检查 0 长度,所以当您 de-reference 它时,您会收到错误消息。
它在 run-time 工作,因为此时控件已经实例化。
第二个问题是您不应该将内容放入 Designer.cs 文件中,因为该代码是由设计人员自动生成的,并且可能会在某个时候重新生成并且您添加的代码会丢失。在 InitializeComponent 调用之后将该代码放入 Window_Name.cs。
我创建了一个自定义用户控件,它本质上是我的 windows 表单应用程序中的一个自定义按钮。我使用以下代码管理了点击事件的重定向:
Control[] customButtonControls = button.Controls.Find("buttonInUserControl", false);
Button nestedButton = (Button)customButtonControls[0];
nestedButton.Click += new System.EventHandler(this.button_click_handling_function);
我已将此附加到 Window_Name.Designer.cs 文件中生成的控件代码下方,我的 button_click_handling_function
在我的 Window_Name.cs 文件中定义。
问题是,当我单击返回 Window_Name.cs[设计] 页面时,我遇到了一个错误页面。我将包括屏幕截图以更好地显示错误。基本上这是一个超级无用的页面。它告诉我我的数组出现索引超出范围错误,但堆栈调用没有任何意义。
如果我尝试构建我的解决方案,我没有遇到任何编译错误,并且我的程序完全按预期运行。点击事件像以前一样触发函数。
提前致谢。
部分设计器代码在 design-time 运行。索引超出范围错误可能是因为在 design-time 处,该 Find 调用尚未找到控件,因此数组为空。您没有检查 0 长度,所以当您 de-reference 它时,您会收到错误消息。 它在 run-time 工作,因为此时控件已经实例化。
第二个问题是您不应该将内容放入 Designer.cs 文件中,因为该代码是由设计人员自动生成的,并且可能会在某个时候重新生成并且您添加的代码会丢失。在 InitializeComponent 调用之后将该代码放入 Window_Name.cs。