【问题标题】:Can I stop Visual Studio auto-changing the form designer code?我可以停止 Visual Studio 自动更改表单设计器代码吗?
【发布时间】:2012-07-03 07:06:25
【问题描述】:

我正在使用 Visual Studio 并有一些 numericUpDown 控件,我已经为(最小值、最大值、值和增量)设置了值。代码设计器不断将我的简单十进制值转换为 int[]。我知道它说“不要使用代码编辑器修改此方法的内容”,但我发现在这里调整属性非常有用,我认为我在更改时只是“让事情变得整洁”:

        this.numericUpDown1.Increment = new decimal(new int[] {
        2,
        0,
        0,
        0});

        this.numericUpDown1.Increment = new decimal(2);

但是,如果我触摸可视表单设计器上的控件,它会变回来。我想也许有一个标志会保持原样,直到我想要更新它。它更多的是为了可读性和导航,但即使它只是把它留在一行我会更开心。

我发现这个 (How can I tell Visual Studio to not populate a field in the designer code?) 有人试图离开它,但我不确定它是否适用于这种情况。

随时告诉我,我应该克服它,不要管它!

【问题讨论】:

    标签: c# winforms visual-studio-2010


    【解决方案1】:

    您可以制作自己的 NumericUpDown 用户控件。只需继承普通的 NumeriUpDown 并在构造函数中设置所需的属性即可。

    public partial class MyUpDownCtrl : NumericUpDown
        {
            public MyUpDownCtrl()
            {
                InitializeComponent();
                this.Increment = new decimal(2);
    
            }
        }
    

    生成解决方案后,您将在工具箱中准备好新的自定义 UpDownControl,只需像常见的 numericUpDown 一样拖动它即可使用。

    希望对您有所帮助,因为我不知道有什么方法可以让 Visual Studio 停止自动更改表单设计器代码。也许根本做不到。

    【讨论】:

    • 谢谢,你给了我刚刚在自我回答中发布的想法。
    【解决方案2】:

    刚刚意识到(感谢@Jonathan)我可以在该位置上方的设计器中创建一个单独的部分......这意味着我可以将所有默认值放在一个单独的部分中,只要我不想更改表单设计器的默认设置。这是InitializeComponent()上面的方法

    private void IntializeOtherComponents()
        {
          this.numericUpDown1.Value = new decimal(17);     
          this.numericUpDown1.Maximum = new decimal(7777);
          this.numericUpDown1.Minimum = new decimal(5); 
        }
    

    【讨论】:

    • 那为什么要把它放在 .Designer.cs 中呢?为什么不在调用 InitializeComponent() 之前或之后将其放入 .cs 中? (编辑:这与乔纳森的回答不同。)
    • 你是完全正确的......为了可读性,这可能是我不需要设计师就能看到和改变事物的最佳方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多