This is the workaround, disable the multi-select in KeyDown and reenable is in KeyUp
bool this._bMultiSelectChanged = false;
void tree_KeyDown(object sender, KeyEventArgs e)
{
if (!e.Control && !e.Shift &&
((this.Options & GridOptions.MultiSelect) == GridOptions.MultiSelect) &&
this.Rows.SelectedNodes.GetLength(0) > 0)
{
switch (e.KeyCode)
{
case System.Windows.Forms.Keys.Up:
case System.Windows.Forms.Keys.Down:
TreeViewNode node = (TreeViewNode) this.Rows.SelectedNodes[0];
this.Options = this.Options & ~GridOptions.MultiSelect;
node.Selected = true;
this._bMultiSelectChanged = true;
break;
}
}
}
void tree_KeyUp(object sender, KeyEventArgs e)
{
if (this._bMultiSelectChanged)
{
this.Options = this.Options | GridOptions.MultiSelect;
this._bMultiSelectChanged = false;
}
}