C# 更改RadGridView.CurrentRow之前调用RadContextMenu.DropDownOpen

C# 更改RadGridView.CurrentRow之前调用RadContextMenu.DropDownOpen,c#,winforms,gridview,contextmenu,dropdown,C#,Winforms,Gridview,Contextmenu,Dropdown,我正试图根据我的RadGridView(编辑:OrderList)中当前选定的行,更改我的RadContextMenu上的项目。如果当前行中的数据绑定项具有正确的属性值,我希望启用该项 问题是,当我直接右键单击一行打开RadContextmenu时,CurrentRow尚未更新,因此使用旧行调用dropdownOpen。 如果我用鼠标左键或右键双击,效果很好 下面是一些代码: OrderMenu.DropDownOpened += OrderMenu_DropDownOpened; 方法呢 p

我正试图根据我的
RadGridView
(编辑:
OrderList
)中当前选定的行,更改我的
RadContextMenu
上的项目。如果当前行中的数据绑定项具有正确的属性值,我希望启用该项

问题是,当我直接右键单击一行打开
RadContextmenu
时,
CurrentRow
尚未更新,因此使用旧行调用
dropdownOpen
。 如果我用鼠标左键或右键双击,效果很好

下面是一些代码:

OrderMenu.DropDownOpened += OrderMenu_DropDownOpened;
方法呢

private void OrderMenu_DropDownOpened(object sender, EventArgs e)
{
    GoToParentOrderBtn.Enabled = GetSelectedOrder()?.ParentOrderId != null;
}

private OrderViewModel GetSelectedOrder()
{
    return (OrderViewModel)OrderList.CurrentRow.DataBoundItem;
}

使用
dataGridView.EndEdit()此函数提交并结束当前正在编辑的单元格上的编辑操作


更多信息

很抱歉没有指定我使用的是radgridview

我找到了一个帮助我解决问题的方法。 最后,我对RadGridView进行了扩展(这样我就可以在应用程序中使用它),在mousedown上触发一个事件:

public partial class RadExtendedGridViewController : RadGridView
{
    public RadExtendedGridViewController()
    {
        InitializeComponent();
        base.MouseDown += RadExtendedGridViewController_MouseDown;
    }

    private void RadExtendedGridViewController_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            var element = this.ElementTree.GetElementAtPoint(e.Location);
            GridDataCellElement cell = element as GridDataCellElement;
            if (cell?.RowElement is GridDataRowElement)
            {
                Rows[cell.RowIndex].IsSelected = true;
            }
        }
    }
}
然后,我将GetSelectedOrder更改为使用SelectedRows而不是Current:

    private OrderViewModel GetSelectedOrder()
    {
        return (OrderViewModel)OrderList.SelectedRows.FirstOrDefault()?.DataBoundItem;
    }

现在它按预期工作。感谢您花时间来帮助我:-)

我为您的问题提供了答案:)很抱歉,我应该指定我的gridview。我使用的是RadGridView