如何解决当行标题单击选择了datagridview行时,如何阻止输入单元格?
| 每当用户单击行标题(选择整个行(并将其突出显示为蓝色))时,实际上就会输入第一列中的单元格。也就是说,如果您开始输入东西,则文本将进入该单元格。我想防止这种情况。选择一行或多行时,是否可以不输入datagridview单元格? 我还需要一种解决方案,以防止在单击和拖动行标题时导致在选择多个行时输入单元格。 关于如何实现此目标的任何想法? 谢谢 以撒解决方法
将您的DataGridView \的ReadOnly属性设置为true或false,这取决于是否选择了一行或多行,或者DGV的\'CellState \'是否已更改。
为您的DataGridView添加以下两个事件:
private void dataGridView1_RowStateChanged(object sender,DataGridViewRowStateChangedEventArgs e) {
if (e.StateChanged == DataGridViewElementStates.Selected) {
Console.WriteLine(\"TRUE\");
dataGridView1.ReadOnly = true;
}
}
private void dataGridView1_CellStateChanged(object sender,DataGridViewCellStateChangedEventArgs e) {
if (e.StateChanged == DataGridViewElementStates.Selected) {
Console.WriteLine(\"false\");
dataGridView1.ReadOnly = false;
}
}
这对我的测试很有效,但是如果隐藏了“陷阱”,我也不会感到惊讶。
, 替代解决方案可能是这样的:
private void dataGrid_CellEnter(object sender,DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0 && dataGrid.Rows[e.RowIndex].Selected)
return;
}
, 基于对“ Jay R”的回答,我对代码进行了一些调整,以免丢失单元格的只读标志。
private void dataGridView1_RowStateChanged(object sender,DataGridViewRowStateChangedEventArgs e)
{
if (e.StateChanged == DataGridViewElementStates.Selected)
e.Row.DataGridView.EditMode = DataGridViewEditMode.EditProgrammatically;
}
private void dataGridView1_CellStateChanged(object sender,DataGridViewCellStateChangedEventArgs e)
{
if (e.StateChanged == DataGridViewElementStates.Selected)
// adjust the edit mode to your \"default\" edit mode if you have to
e.Cell.DataGridView.EditMode = DataGridViewEditMode.EditOnEnter;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。