Visual Studio 2010在Designer.cs中对不需要的值进行硬编码

时间:2015-06-30 11:57:54

标签: c# visual-studio-2010 user-controls

我在Visual Studio中的表单上有一个用户控件,它是一个自定义日期条目控件(为了讨论CustomDate而调用)。此控件包含名为CompareDate的属性,其类型为DateTime。这将获取/设置一个名为compareDate的私有变量的值。 (不是控件或任何只是用于内部逻辑的变量)

我将此控件放在表单CustomerForm上,并将其命名为uctCustomDate

出于某种原因,对CustomerForm所做的任何更改都会导致一行自动插入CustomerForm.Designer.cs,将uctCustomDate.CompareDate的值硬编码到今天的日期!

有没有办法避免这种情况?我可以删除该行并构建应用程序,但这意味着每次我对此表单进行更改时都必须记住这样做。我应该注意什么(例如,另一个开发者可能已经投入)?

如果它有帮助,这里有一些代码......

CompareDate.cs

中的

private DateTime compareDate = DateTime.Today;   // BTW it happens whether or not I initialise to DateTime.Today

.
.
.

public DateTime CompareDate 
{
    get { return compareDate; }
    set { compareDate = value; }
}

每当我对CustomerForm.Designer.cs表单设计进行更改时,代码会自动插入CustomerForm

// 
// uctCustomDate
// 
this.uctCustomDate.CompareDate = new System.DateTime(2015, 6, 30, 0, 0, 0, 0);

2 个答案:

答案 0 :(得分:2)

如果您在BrowsableAttribute媒体资源上使用CompareDate,则不会在表单设计器的Properties窗口中显示

如果您在DesignerSerializationVisibilityAttribute上使用Hidden且知名度= CompareDate,则CustomerForm.Designer.cs

中的属性不会被序列化

[DesignerSerializationVisibilityAttribute]

现有行this.uctCustomDate.CompareDate = ...不会自动从设计师文件中删除

[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public DateTime CompareDate 
{
    get { return compareDate; }
    set { compareDate = value; }
}

答案 1 :(得分:0)

您是否尝试过将compareDate设为可以为空的Datetime?这样设计师就不应该自己初始化它。

DateTime? compareDate;


public DateTime? CompareDate 
{
    get { return compareDate; }
    set { compareDate = value; }
}