winforms c#切换TabControl选项卡时随机设计器崩溃

tjvv9vkg  于 2023-04-21  发布在  C#
关注(0)|答案(2)|浏览(324)

我创建了一个表单应用程序,并在上面放置了一个选项卡控件。在同一个项目中,我添加了一个UserControl,其中包含一个选项卡所需的所有控件。然后我将此UserControl放置在选项卡控件的第二个选项卡上。
现在,当我打开设计器修改表单应用程序时,它加载OK(尽管它比平常花费更长的时间),但当我选择第二个选项卡时,MSVS只是冻结,说它遇到了错误,并重新启动(大多数时候)。
我点击“调试”按钮,打开一个新的MVS 2005窗口并显示:“devenv.exe中0x 10 d84 c12处的未处理异常:0xC0000005:阅读位置0x 00000000时发生访问冲突。”
不知道发生了什么事...:(尝试重新启动,但没有工作。
任何帮助将不胜感激!

0ejtzxu1

0ejtzxu11#

如果控件最终执行非托管代码,则可能会发生这种情况。
确保控件的源代码在DesignMode为true时不执行任何操作。
如果使用ActiveX控件,也可能发生这种情况;如果控件处于设计模式,请尝试在代码中移除它们。
您可以在Load处理程序中执行此操作:

if (DesignMode)
    somePanel.Remove(someControl);
0md85ypi

0md85ypi2#

我在tabcontrol中遇到了类似的问题,但这是因为子控件将一些代码运行到它的_Load事件中,即使代码被if(DesignMode) Package ,它仍然会被执行。解决方案是创建一个字段来保存构造函数中的designmode标志,然后将其读入load事件。

相关问题