如何在DataGridView中禁用单击空行
本文关键字:单击 DataGridView | 更新日期: 2023-09-27 18:16:44
如何在DataGridView
的空行上禁用单击/光标?我有交替的行,一行有数据,另一行空然后一行有数据,然后一行空。我想禁用点击空/空行。
我已经改进了我的代码多亏了微风,部分得到了我想要的,但这显然适用于每个细胞。我如何实现这段代码,使只读模式为真,只有完全空的行,而不是那些行,甚至有一个单元格包含数据。
private void dataGridView3_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex < 0 || e.RowIndex < 0)
{
return;
}
var dataGridView = (sender as DataGridView);
try
{
int col = e.ColumnIndex;
int row = e.RowIndex;
var cell = ((DataGridView)sender)[col, row];
if (cell != null && cell.Value != "")
{
dataGridView.Cursor = Cursors.Hand;
}
else
{
dataGridView.Cursor = Cursors.No;
dataGridView.ReadOnly = true;
}
}
catch (Exception es)
{
MessageBox.Show(es.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
谢谢你的帮助
不仅要检查对单元格的引用是否为空,还要检查单元格的值是否为空字符串。为此,展开
if(cell != null)
if(cell != null && cell.Value != "")
检查cell
是否为null
并不是真正必要的,但它不会造成伤害,并保护您避免在进一步开发中可能发生的一些错误
这样就可以了。这可能需要根据您的实例进行调整,并且可能应该使用"!"="从结构中删除几行。
internal void AllRows_OnClick(object sender, EventArgs e){
int rowIndex = e.RowIndex;//Get Row that was clicked
DataGridViewRow row = dataGridView1.Rows[rowIndex];//update to Row
if (row.Cells[1].Value.ToString() == ""){
//Do Nothing
}else{
//Do Something
}
}