当我们用ctrl +鼠标左键wpf点击时,如何取消选择一个devexpress数据网格行

时间:2013-09-19 04:27:58

标签: c# wpf datagrid devexpress

我有一个包含数据的devexpress数据网格。我可以选择多行,点击按钮我完全取消选中所有行。但问题是我无法通过ctrl +鼠标左键单击取消选择该行。

实际上,当我检查visiblerowcount值时,取消选择该行,但在UI中它仍然显示为选定的行。

如何取消选举? 这是用于选择网格的所有行的代码

MyGrid.TableView.SelectAll();
SelectedRecords.Text = "" + MyGridVisibleRowCount;

并取消选中按钮点击的所有行我正在这样做

MyGrid.ClearSelection();
MyGrid.View.FocusedRowHandle = -1;
SelectedRecords.Text = "" + 0;

任何高度重视的帮助。

由于 内甚

2 个答案:

答案 0 :(得分:0)

我认为您应该使用UnselectRow方法。试试这段代码:

MyGrid.BeginUpdate();

for (int i = 0; i < MyGrid.RowCount; i++)
{
    if (MyGrid.IsRowSelected(i))
        MyGrid.UnselectRow(i);
}

MyGrid.EndUpdate();

答案 1 :(得分:0)

这个问题很老了。但对于新来者;

1-将字段设置为&#34; bool isCtrlPressed = false;&#34;除了任何方法之外。

2-处理gridcontrol或gridview的keydown事件并设置&#34; isCtrlPressed = e.Control&#34;在那个事件的方法。

3-处理gridcontrol或gridview mouseup。设置

var hitInfo = gridView.CalcHitInfo(e.Location); 
if(isCtrlPressed && hitInfo.InRow || hitInfo.InRowCell){
    if(isCtrlPressed && gridView.IsRowSelected(hitInfo.RowHandle){
        gridView.UnselectRow(hitInfo.RowHandle);
    }
}

4-终于不要忘记通过处理gridcontrol或gridview的mouseup并重置&#34; isCtrlPressed = false&#34;

来释放isCtrlPressed

如果你坚持使用hitInfo课程,你可以在DevExpress的支持中心内导航。我没有测试这段代码,但可能需要一个rowHandle检查,例如它是否相等GridControl.AutoFilterRowHandle。