我在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);
答案 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; }
}