我有这段代码的数据网格:
private void Form2_Load(object sender, EventArgs e)
{
//loadGrid();
this.dataGridView2.Columns.Add("c1", "???");
this.dataGridView2.Columns.Add("c2", "?????");
}
我使用Button
和CheckListBox
使用此代码删除数据网格中的列:
private void btnSelect_Click(object sender, EventArgs e)
{
foreach (DataGridViewColumn column in MyDataGridView.Columns)
{
checkedListBox1.Items.Add(column.HeaderText, column.Visible);
checkedListBox1.ItemCheck += (ss, ee) =>
{
if (checkedListBox1.SelectedItem != null)
{
var selectedItem = checkedListBox1.SelectedItem.ToString();
MyDataGridView.Columns[selectedItem].Visible = ee.NewValue == CheckState.Checked;
}
};
}
}
运行时我有一个错误:
对象引用未设置为对象的实例。
感谢。
答案 0 :(得分:0)
在Form2_Load代码中填充“dataGridView2”
this.dataGridView2.Columns.Add("c1", "???");
this.dataGridView2.Columns.Add("c2", "?????");
但是在btnSelect_Click中你试图迭代MyDataGridView,在上面的代码中我没有看到MyDataGridView在任何地方使用过。也许你从某个地方复制并粘贴了这段代码而忘了将MyDataGridView更改为datagridview名称,这实际上是在你的表格dataGridView2上?修改如下......
foreach (DataGridViewColumn column in dataGridView2.Columns)
{
checkedListBox1.Items.Add(column.HeaderText, column.Visible);
checkedListBox1.ItemCheck += (ss, ee) =>
{
if (checkedListBox1.SelectedItem != null)
{
var selectedItem = checkedListBox1.SelectedItem.ToString();
dataGridView2.Columns[selectedItem].Visible = ee.NewValue == CheckState.Checked;
}
};
}
}