.net - 如何防止 Visual Studio Windows 窗体设计器删除控件?

标签 .net vb.net winforms visual-studio-2008 windows-forms-designer

对于我的几种表单,我偶尔会遇到以下问题:我使用设计器(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/

相关文章:

.net - 如何开发 Windows 应用程序

c# - 泛型类型转换

mysql - 获取数据绑定(bind)组合框中所选项目的值

c# - 刷新时我的 DataGridView 闪烁

c# - 为什么我需要在 SaveChanges 之前更改 Binding Source Position

c# - .Net 应用程序设置 - 属性绑定(bind) OnPropertyChanged()

.net - Blazor BaseURI http 与 https 问题

mysql - 如何使用 VB.net 创建自定义 CrytalReporting 模板并将文件保存为 PDF

c# - 将 vb 日期比较转换为 c#

c# - 删除 Winforms 中的 DataRepeater Control 底线