C# Visual Studio 2010在Designer.cs中硬编码不需要的值
我在VisualStudio中的表单上有一个用户控件,它是一个自定义日期输入控件(为讨论而调用C# Visual Studio 2010在Designer.cs中硬编码不需要的值,c#,visual-studio-2010,user-controls,C#,Visual Studio 2010,User Controls,我在VisualStudio中的表单上有一个用户控件,它是一个自定义日期输入控件(为讨论而调用CustomDate)。此控件包含一个名为CompareDate的属性,其类型为DateTime。这将获取/设置名为compareDate的私有变量的值。(不是控件或任何东西,只是用于内部逻辑的变量) 我将此控件放置在表单CustomerForm上,并将其称为uctCustomDate 由于某些原因,对CustomerForm所做的任何更改都会导致一行自动插入到CustomerForm.Designer
CustomDate
)。此控件包含一个名为CompareDate
的属性,其类型为DateTime
。这将获取/设置名为compareDate
的私有变量的值。(不是控件或任何东西,只是用于内部逻辑的变量)
我将此控件放置在表单CustomerForm
上,并将其称为uctCustomDate
由于某些原因,对CustomerForm
所做的任何更改都会导致一行自动插入到CustomerForm.Designer.cs
硬编码uctCustomDate的值。将与今天的日期进行比较
有没有办法避免这种情况?我可以删除该行并构建应用程序,但这意味着每次更改此表单时,我都必须记住这样做。我应该注意的任何事情(例如,其他开发人员可能投入的)
这里有一些代码,如果它有帮助的话
在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
表单设计进行更改时,代码就会自动插入到CustomerForm.Designer.cs
//
// uctCustomDate
//
this.uctCustomDate.CompareDate = new System.DateTime(2015, 6, 30, 0, 0, 0, 0);
如果在CompareDate
属性上使用BrowsableAttribute
,它将不会显示在表单设计器的Properties
窗口中
如果在CompareDate
上使用DesignerSerializationVisibilityAttribute
并将可见性设置为Hidden
,则属性将不会在CustomerPerform.Designer.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; }
}
现有行this.uctCustomDate.CompareDate=…
不会自动从设计器文件中删除
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public DateTime CompareDate
{
get { return compareDate; }
set { compareDate = value; }
}
您是否尝试过将compareDate设置为可为空的日期时间?这样,设计者不应该自己初始化它
DateTime? compareDate;
public DateTime? CompareDate
{
get { return compareDate; }
set { compareDate = value; }
}
这确实会将其从“属性”窗口中删除,但如果我对表单进行更改,它不会停止初始化。@colmde,你是对的:Browsable(false)无法解决此问题。我现在更新了我的答案我已经尝试过了,但是如果我对表单做了更改,它不会阻止设计师插入代码