我是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();
}
}
答案 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]);
}
}