如何使Visual Studio的Windows窗体设计器不会删除控件?

Sör*_*lau 4 .net vb.net visual-studio-2008 windows-forms-designer winforms

有了我的几种形式,我偶尔遇到以下问题:我使用设计器(Visual Studio 2008,Windows Forms,.NET 2.0,VB.NET)编辑表单来添加组件,但后来才发现一些小的调整制作(例如,表格的大小突然改变几个像素),控件被删除.这是静默发生的 - 事件处理方法Handles也会自动删除它们的后缀,因此它们永远不会被调用,并且没有编译器错误.我之后才会注意到或者根本没有注意到,因为我正在处理表单中的其他区域.

举个例子,我有一个表格,左边是SplitContainer一个Infragistics UltraListView,UltraTabControl右边是.我添加了一个新选项卡,并在其中进行控制,并且它们工作正常.我后来发现列表视图的滚动条突然变得不可见,因为它的大小已经关闭,并且至少有一个控件从我没有处理的不同选项卡中删除.

这是WinForms Designer或Infragistics的已知问题吗?当然,我使用版本控制,因此我可以比较更改并将已删除的代码合并回来,但这是一个繁琐的过程,不应该是必要的.有办法避免这种情况吗?有没有充分的理由发生这种情况?

一个线索是,被删除的控件可能具有Load期望在运行时而不是设计时运行的代码(例如事件处理程序),并且可能抛出异常.这会导致Visual Studio删除控件吗?

Dan*_*olz 10

这不是您的问题的答案,但请记住,您应该在加载中使用"DesignMode".这避免了在设计时出现奇怪的意外行为.

private void EureFormAbm_Load(object sender, System.EventArgs e)
{
    if (!DesignMode)
    {
        // Your code
    } /* if */
}
Run Code Online (Sandbox Code Playgroud)

要么

private void EureFormAbm_Load(object sender, System.EventArgs e)
{
    if (DesignMode)
        return;
    // Your code
}
Run Code Online (Sandbox Code Playgroud)