Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio 2010在Designer.cs中硬编码不需要的值_C#_Visual Studio 2010_User Controls - Fatal编程技术网

C# Visual Studio 2010在Designer.cs中硬编码不需要的值

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

我在VisualStudio中的表单上有一个用户控件,它是一个自定义日期输入控件(为讨论而调用
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)无法解决此问题。我现在更新了我的答案我已经尝试过了,但是如果我对表单做了更改,它不会阻止设计师插入代码