C# 由于错误类型';,C无法调整控件大小';未标记为可序列化
我正在开发一个带有多个程序集的C#winforms应用程序。我开始犯一个我无法回避的错误 错误消息:程序集“AppData,版本=1.0.0.0,区域性中立,PublicKeyToken=null”中的类型“AppData.Globals”未标记为可序列化 当:尝试调整在另一个用户控件(CtrlTypePropedEditorDateBox类型)中使用的用户控件(DateTimeExpEditor类型)的大小时引起,这两个控件都位于程序集AppData中。奇怪的是,我可以通过直接编辑UserControl的属性网格条目中的Width属性来调整它的大小 我没有尝试序列化任何东西(事实上,我确实需要并且一直在编写我自己的序列化程序方法,这很好,谢谢),但是我知道VS在项目中序列化数据 错误消息与AppData.Globals有关。两个UserControl中都有以下声明:C# 由于错误类型';,C无法调整控件大小';未标记为可序列化,c#,visual-studio,winforms,serialization,C#,Visual Studio,Winforms,Serialization,我正在开发一个带有多个程序集的C#winforms应用程序。我开始犯一个我无法回避的错误 错误消息:程序集“AppData,版本=1.0.0.0,区域性中立,PublicKeyToken=null”中的类型“AppData.Globals”未标记为可序列化 当:尝试调整在另一个用户控件(CtrlTypePropedEditorDateBox类型)中使用的用户控件(DateTimeExpEditor类型)的大小时引起,这两个控件都位于程序集AppData中。奇怪的是,我可以通过直接编辑UserCo
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[NonSerialized]
private AppData.Globals _g;
AppData.Globals本身声明如下:
namespace AppData
{
public class Globals : Dolphin.Globals
{
private AppData.Servers _servers;
private AppData.DataTypes _dataTypes;
private AppData.SqlTypes _sqlTypes;
private AppData.CtrlTypes _ctrlTypes;
private ImageList _imageList;
...
Globals仅在运行时使用,不需要由设计器序列化。我仍然在使用VS2012。请帮帮我,我的头发都快掉光了
更新:通过直接使用记事本编辑设计器文件,我成功地从CtrlTypePropedEditor DateBox中删除了DateTimeExpEditor实例。如果我现在尝试创建一个新的,我会得到以下结果:
我不完全理解为什么,但在删除并重新创建了几次DateTimeExpEditor之后,错误消息指向控件上的属性ValueDateTime和ValueExpression。我对它们进行了修改,以包含以下编译器指令:
[BrowsableAttribute(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public DateTime ValueDateTime
{
get
{
return DateTime.Parse(txt.Text);
}
set
{
txt.Text = value.ToString(_format);
}
}
[BrowsableAttribute(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Expression ValueExpression
{
get
{
return new Expression(_g, "DATETIME", enumExpressionSource.Expression, txt.Text);
}
set
{
txt.Text = value.ToString();
}
}