我有一个简单的C#Windows窗体应用程序,该应用程序应显示一个DataGridView。作为数据绑定(bind),我使用了一个对象(选择了一个名为Car的类),它的样子是这样的:
class Car
{
public string color { get; set ; }
public int maxspeed { get; set; }
public Car (string color, int maxspeed) {
this.color = color;
this.maxspeed = maxspeed;
}
}
但是,当我将DataGridView属性
AllowUserToAddRows
设置为true
时,仍然很少*允许我添加行。有人建议将
carBindingSource.AllowAdd
设置为true
,但是,当我这样做时,我得到了一个MissingMethodException
,它说找不到我的构造函数。 最佳答案
您的Car类需要具有无参数的构造函数,而数据源则需要像BindingList之类的东西
将Car类更改为此:
class Car
{
public string color { get; set ; }
public int maxspeed { get; set; }
public Car() {
}
public Car (string color, int maxspeed) {
this.color = color;
this.maxspeed = maxspeed;
}
}
然后绑定(bind)这样的东西:
BindingList<Car> carList = new BindingList<Car>();
dataGridView1.DataSource = carList;
您也可以为此使用BindingSource,但不必这样做,但是BindingSource提供了某些有时可能是必需的额外功能。
如果由于某种原因您绝对不能添加无参数的构造函数,则可以处理绑定(bind)源的添加新事件并调用Car参数化的构造函数:
设置绑定(bind):
BindingList<Car> carList = new BindingList<Car>();
BindingSource bs = new BindingSource();
bs.DataSource = carList;
bs.AddingNew +=
new AddingNewEventHandler(bindingSource_AddingNew);
bs.AllowNew = true;
dataGridView1.DataSource = bs;
和处理程序代码:
void bindingSource_AddingNew(object sender, AddingNewEventArgs e)
{
e.NewObject = new Car("",0);
}
关于C#-DataGridView无法添加行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11394012/