读书人

两行超级简略的代码让你的程序直接崩溃

发布时间: 2013-08-22 10:08:34 作者: rapoo

两行超级简单的代码让你的程序直接崩溃,请指出原因!
两行超级简单的代码直接让你的程序崩溃,大家分析一下原因!
datagridview控件的两个时间!
鼠标移动到单元格上默认选中这一行,离开的时候不选中!代码如下:


大家分析一下原因! DataGridView 控件
[解决办法]

private void dataGridView_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
dataGridView.Rows[e.RowIndex].Selected = true;
}

private void dataGridView_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
dataGridView.Rows[e.RowIndex].Selected = false;//离开之后不选中
}

[解决办法]
错误提示已经给出原因你了,当数据为空或你鼠标移到列头时索引为-1,索引超出范围。
[解决办法]
你的DataGridView没有数据,而你强行使用-1行。
使用try{}catch{}抛出这个错误就好了。
[解决办法]
引用:

private void dataGridView_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)


dataGridView.Rows[e.RowIndex].Selected = true;
}

private void dataGridView_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
dataGridView.Rows[e.RowIndex].Selected = false;//离开之后不选中
}


+1
[解决办法]
rowindex有可能是小于0,调试都不知道自己看看rowindex的值
[解决办法]
引用:

private void dataGridView_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
dataGridView.Rows[e.RowIndex].Selected = true;
}

private void dataGridView_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex != -1)
dataGridView.Rows[e.RowIndex].Selected = false;//离开之后不选中
}


正解。同样也可以用e.RowIndex>0来判断

读书人网 >C#

热点推荐