如何停止 Visual Studio 为设计器中的控件生成属性设置?

Posted

技术标签:

【中文标题】如何停止 Visual Studio 为设计器中的控件生成属性设置?【英文标题】:How Do I Stop Visual Studio from Generating property setting for the controls in designer? 【发布时间】:2012-06-11 16:07:17 【问题描述】:

在 Visual Studio 2008 中,当我添加一些控件以形成设计器时,会自动创建一些关于控件属性的代码。现在,我正在使用自己的用户控件并将它们添加到表单中,设计器再次自动创建代码行,在这种情况下,属性 FONT 是我不希望设计器添加它的属性之一,因为它覆盖上层的字体设置。任何人都知道如何设置要在设计器中设置的属性?

【问题讨论】:

【参考方案1】:

如果设计者确定属性的值与 DefaultValue[Attribute] 不同,则仅添加一行代码来更改该属性的值。

如果您的自定义控件想要更改 Font 属性(或任何其他基类属性)的默认值,您必须执行一些小技巧:

public class MyControl : Control

    public MyControl()
    
        base.Font = new Font("Arial", 9.75f);
    

    [DefaultValue(typeof(Font), "Arial, 9.75pt")]
    public new Font Font
    
        get  return base.Font; 
        set  base.Font = value; 
    

注意到字体属性上的“新”关键字了吗?字体不是虚拟的,所以你不能覆盖它,我们也不想这样做。您覆盖以更改行为。我们不想改变行为(这就是代码简单地重定向回基础的原因),我们只想公开一个新的 DefaultValue。这会诱使设计人员考虑控件的新默认值。

我们还确保我们的 Font 属性在构造时具有该值。

【讨论】:

以上是关于如何停止 Visual Studio 为设计器中的控件生成属性设置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio Xamarin.ios 设计器中添加同级视图?

Visual Studio:如何通过依赖关系安排解决方案资源管理器中的项目

图像显示在 Visual Studio 设计器中,但不在运行时

从设计器中隐藏 WPF 控件的属性 (Visual Studio 2010)

将数据库移动到新服务器后,无法在 Visual Studio 2010 的实体框架设计器中看到 SQL Server 2008 表

如何使用 Visual Studio 中的 C# 代码打开和关闭与服务器资源管理器中保存的数据库 (.db) 数据连接的连接?