使用c#中的xeed datagrid将焦点更改为下一个单元格

时间:2011-08-31 11:18:26

标签: c# datagrid xceed

我是C sharp编程的新手。我需要对我们的项目进行更改。基本上我们使用Xeed datagrid,它有4列。数据与集合对象绑定,并通过DB调用动态更新。我的问题是4列,1列是可编辑的。当用户在此列中进行更改并按Enter键时,焦点需要在编辑模式下更改为同一列中的单元格下方。以下是我正在写的KeyUp事件。在我进行更改之后,这个columna nd命中输入焦点将转到下一行,但编辑模式不会进入下一个单元格,而是保留在已编辑的同一单元格上。

private void _dataGrid_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
    _dataGrid.EndEdit();
    int currentRow = _dataGrid.SelectedIndex;
    currentRow++;
    _dataGrid.SelectedIndex = currentRow;
    _dataGrid.Focus() ;
    _dataGrid.BeginEdit();
    }
}

2 个答案:

答案 0 :(得分:0)

我认为您需要更改CurrentItem属性。我使用不同的网格控制,所以我不保证它会工作。但程序应该是这样的:

private void _dataGrid_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
       _dataGrid.EndEdit();
       int nextIndex = _dataGrid.SelectedIndex + 1;
       //should crash when enter hit after editing last row, so need to check it
       if(nextIndex < _dataGrid.items.Count)
       {
          _dataGrid.SelectedIndex = nextIndex;
          _dataGrid.CurrentItem = _dataGrid.Items[nextIndex];
        }
       _dataGrid.BeginEdit();
    }
}

答案 1 :(得分:0)

遵循解决方案

private void _dataGrid_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        int rowCount = _dataGrid.Items.Count;
        int currentRow = _dataGrid.SelectedIndex;

        if (rowCount - 1 > currentRow)
            currentRow++;
        else
            currentRow = 0;

        _dataGrid.CurrentItem = _dataGrid.Items[currentRow];
        _dataGrid.BringItemIntoView(_dataGrid.Items[currentRow]);

    }
}