在自定义用户控件中重定向按钮单击时出现设计器错误

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。