最近遇到了一个问题就是,如何禁用用户选中dataGridView中的行,我知道设置RowHeadersVisible可以把“行头”给隐藏掉,但是我不行那样做,至于提出这个问题是应为我测试的程序报错,一下是部分代码:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
//for(int a =0; a <=dataGridView1.Columns.Count-1;a++)
//{
// MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[a].Value.ToString());
//}
switch (dataGridView1.Columns[e.ColumnIndex].HeaderText)
{
case "详情":
Student_list stu_lst = new Student_list(Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString()));
stu_lst.ShowDialog();
break;
case "修改":
Class_Detail cls_del = new Class_Detail(Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString()));
//cls_del.Controls["groupBox1"].Controls["textBox1"].Text = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();
//cls_del.Controls["groupBox1"].Controls["textBox2"].Text = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString();
cls_del.ShowDialog();
Bind();
break;
case "删除":
DialogResult MsgBoxResult = MessageBox.Show("是否要删除此条信息?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);
if (MsgBoxResult == DialogResult.Yes)//如果对话框的返回值是YES(按"Y"按钮)
{
Class cls = new Class();
cls.Delete(Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString()));
Bind();
}
break;
default:
break;
}
如果我选中一行的话就报索引超出范围。。。
不是可以设置选中模式为cell吗?