c# - 如何修改C# Designer.cs文件中的注释

标签 c# winforms windows-forms-designer

我目前正在制作自定义控件,当 VS 写入 Designer.cs 文件时,某些属性会生成这些奇怪的空白注释。示例:

// 
// myControl
// 
this.myControl.Name = "myControl";
this.myControl.Property = 30;
this.myControl.OtherProperty = 20;
// 
// 
// 
this.myControl.Options1.Name = null;
this.myControl.Options1.Option = "example";
// 
// 
// 
this.myControl.Options2.Name = null;
this.myControl.Options2.SomeProperty = 50;
this.myControl.Options2.SomeEvent += new System.EventHandler(this.myControl_Options2_SomeEvent);
this.myControl.OtherProperty = 10;

有人知道是什么导致这些空白评论吗?我不希望有任何评论,但如果我至少可以显示名称“myControl.Options1”,那是可以接受的。

这是我的类的粗略结构(虽然非常简单):

[ToolboxItem(false)]
public class Options : IComponent
// I implement IComponent so this class appears in the Properties window nicely. Not sure why exactly it works though.
{

    #region Implement IComponent

    public ISite Site { get; set; }

    public void Dispose()
    {
        // Nothing needs to be disposed
        Disposed?.Invoke(this, EventArgs.Empty);
    }

    public event EventHandler Disposed;

    #endregion
}

public partial class MyControl : UserControl
{
    #region Options

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public Options Options1 { get; private set; }

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public Options Options2 { get; private set; }

    public MyControl
    {
        Options1 = new Options();
        Options2 = new Options();
    }

    #endregion
}

任何想法都会很有帮助!我在网上其他任何地方都找不到这个问题。我的假设是我滥用了 IComponent 接口(interface),但我不确定如何修复它。

最佳答案

这些注释是自动生成的,对输出二进制文件没有影响。当你编译时,它们都会被删除,所以你不必担心膨胀或类似的事情。为了可维护性,其他开发人员应该被引导到设计者,而不是输出的代码。如果有人对设计器进行了更改,他们的编辑将不会被保留。

我建议完全忽略设计师实际发出的内容。它并不是真的要编辑 - 不过,对于查看设计师实际创建的源文件很有用。

关于c# - 如何修改C# Designer.cs文件中的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45038271/

相关文章:

c# - Linq 到 SQL : Aggregating over ||

c# - 处理函数代码中可变性的策略

c# - 将数据从 UserControl 传递到另一个

c# - Visual Studio 不断删除 form.designers 中的代码

c# - 如何找到执行函数的对象类型和名称?

C#:使用 FileSystemWatcher 监视复制或移动的文件

c# - 我应该将每个 WinForm 对象(例如文本框或按钮)设置为公共(public)的吗?有什么风险?

c# - 创建窗口句柄时出错

c# - 在 Windows 窗体设计器中绑定(bind)对象

c# - 从代码文件动态设置控件的属性