我定义了一个用户控件,但是把它拖到窗体上时提示
“属性BookList代码生成失败。......MyBook未标记为可序列化”
我的UserControl1 .cs代码如下,其它全部没改(注:在public class MyBook
上加上属性[Serializable]仍提示此错误
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication4
{
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
BookList = new List<MyBook>();
} private List<MyBook> bookList;
public List<MyBook> BookList
{
get { return bookList; }
set { bookList = value; }
} public class MyBook
{
public int a;
public int b;
public MyBook(int a,int b)
{
this.a = a;
this.b = b;
}
}
}
}
“属性BookList代码生成失败。......MyBook未标记为可序列化”
我的UserControl1 .cs代码如下,其它全部没改(注:在public class MyBook
上加上属性[Serializable]仍提示此错误
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication4
{
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
BookList = new List<MyBook>();
} private List<MyBook> bookList;
public List<MyBook> BookList
{
get { return bookList; }
set { bookList = value; }
} public class MyBook
{
public int a;
public int b;
public MyBook(int a,int b)
{
this.a = a;
this.b = b;
}
}
}
}
改成使用数组确实可以,但是不能初始化,否则就出错。我在构造函数里初始化一下,在把控件拖到窗体上时,提示不能为BookList生成代码,因为对象引用没有设置到实例。请问这是为什么啊?应该在哪初始化啊?解决了马上结贴,谢谢了!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication3
{
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
// 初始化
BookList = new MyBook[11];
} private MyBook[] bookList;
public MyBook[] BookList
{
get { return bookList; }
set { bookList = value; }
} public class MyBook
{
public int a;
public int b;
public MyBook()
{
a = 1;
b = 1;
}
public MyBook(int a,int b)
{
this.a = a;
this.b = b;
}
}
}
}
private MyBook[] bookList={};
不好意思,我用vb的C#语法不是很熟。另外,建议你用集合,不要用数组。