0

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

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();
    }
}
4

2 回答 2

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]);

    }
}
于 2011-09-01T09:26:39.953 回答
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();
    }
}
于 2011-08-31T12:28:07.210 回答