Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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# 由于错误类型';,C无法调整控件大小';未标记为可序列化_C#_Visual Studio_Winforms_Serialization - Fatal编程技术网

C# 由于错误类型';,C无法调整控件大小';未标记为可序列化

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

我正在开发一个带有多个程序集的C#winforms应用程序。我开始犯一个我无法回避的错误

错误消息:程序集“AppData,版本=1.0.0.0,区域性中立,PublicKeyToken=null”中的类型“AppData.Globals”未标记为可序列化

当:尝试调整在另一个用户控件(CtrlTypePropedEditorDateBox类型)中使用的用户控件(DateTimeExpEditor类型)的大小时引起,这两个控件都位于程序集AppData中。奇怪的是,我可以通过直接编辑UserControl的属性网格条目中的Width属性来调整它的大小

我没有尝试序列化任何东西(事实上,我确实需要并且一直在编写我自己的序列化程序方法,这很好,谢谢),但是我知道VS在项目中序列化数据

错误消息与AppData.Globals有关。两个UserControl中都有以下声明:

[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();
            }
        }