对于我的几种表单,我偶尔会遇到以下问题:我使用设计器(Visual Studio 2008,Windows Forms,.NET 2.0,VB.NET)编辑表单以添加组件,后来才发现一些细微的调整被制作(例如,表单的大小突然改变了几个像素),并且控件被删除。这会悄无声息地发生——事件处理方法也会自动删除它们的 Handles
后缀,因此它们永远不会被调用,并且没有编译器错误。我只是很晚才注意到或根本没有注意到,因为我正在处理表单中的不同区域。
例如,我有一个 SplitContainer
的表单,左侧包含一个 Infragistics UltraListView
,右侧包含一个 UltraTabControl
。我添加了一个新选项卡和其中的控件,它们运行良好。后来我发现 ListView 的滚动条突然不可见,因为它的大小被关闭,并且至少有一个控件从我没有处理过的另一个选项卡中删除。
这是 WinForms Designer 或 Infragistics 的已知问题吗?当然,我使用版本控制,因此我可以比较更改并将已删除的代码合并回,但这是一个不必要的乏味过程。有没有办法避免这种情况?发生这种情况有充分的理由吗?
一个线索是,被移除的控件可能具有期望在运行时而不是设计时运行的代码(例如 Load
事件处理程序),并且可能会引发异常。这会导致 Visual Studio 删除控件吗?
最佳答案
这不是您问题的答案,但请记住,您应该在加载中使用“DesignMode”。这避免了设计时出现奇怪的意外行为。
private void EureFormAbm_Load(object sender, System.EventArgs e)
{
if (!DesignMode)
{
// Your code
} /* if */
}
或者
private void EureFormAbm_Load(object sender, System.EventArgs e)
{
if (DesignMode)
return;
// Your code
}
关于.net - 如何防止 Visual Studio Windows 窗体设计器删除控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2677646/