1

我在 C#.Net2010 中有 Windows 应用程序。我添加了带有一些 Comobobox 和 CheckBox 列的 griview。

我在 GridView 中为一些与数据相关的问题设置了一些只读行。

现在,当事件用户从组合框列中选择一些值并按 Enter 时,如果下一行是只读的,我想将 rowSelector 设置为非只读的行

我写了以下代码:

 for (int i = gridAttendanceEntry.CurrentRow.Index + 1; i < gridAttendanceEntry.Rows.Count; i++)
             {
                 if (!gridAttendanceEntry.Rows[i].ReadOnly)
                 {
                     gridAttendanceEntry.Rows[i].Selected = true;
                     this.gridAttendanceEntry.FirstDisplayedScrollingRowIndex = i;
                     break;
                 }
                 if (i == gridAttendanceEntry.Rows.Count - 1)
                     i = 0;
             }

如何以编程方式更改行选择器?

4

2 回答 2

1
  1. 获取选中/聚焦的行索引
  2. 暂时将其保存到整数变量并执行 + 1
  3. 检查具有新索引的行是否是只读的。不是?选择它,否则添加 1 并再次执行第 3 步
于 2012-07-31T09:31:52.103 回答
1
if (!gridAttendanceEntry.Rows[i].ReadOnly) 
{ 
     gridAttendanceEntry.Rows[i].Selected = true; 
     this.gridAttendanceEntry.FirstDisplayedScrollingRowIndex = i; 
     break; 
}
else
{
     gridAttendanceEntry.Rows[i].Selected = false;
}

你需要这个 else 语句。我确实相信控件的默认行为是在组合框中进行更改后选择下一行。在您的情况下,当该行是只读的时,您需要通过手动取消选择它来确保没有发生这种情况。

于 2012-08-08T13:43:40.393 回答