如何在 DataGrid 控件上标记多项选择?
How to mark a multiple selection on a DataGrid control?
我有一个基于 Datagrid 的自定义控件。我想要实现的是对行进行多项选择,然后右键单击行选择器以打开上下文菜单。
实际发生了什么:在用户右键单击行选择器之前,多行的选择工作正常。完成后,只有一行被选中,即鼠标右键单击的那一行。
我需要做的事情:允许用户进行多项选择(行具有可供选择的样式)并右键单击以打开上下文菜单而不丢失先前的选择。
我需要做什么?
不,根本不会发生那样的事情。确保将 DataGridView
MultiSelect
属性 设置为 TRUE
。然后将您的 ContextMenustrip
控件分配给数据网格的 ContextMenuStrip
属性.
这应该可以完成工作,并且鼠标右键单击也应该保留多项选择,除非在您的代码后面某处您正在更改它。
在这种情况下,您将不得不调试并找出调试的位置和方式。
刚刚重新访问代码,发现我没有更新 SelectedItems IList:
Dispatcher.BeginInvoke(new Action(delegate
{
foreach (var item in e.RemovedItems)
{
SelectedItems.Add(item);
}
SelectedItemsList.Add(SelectedItem);
}), System.Windows.Threading.DispatcherPriority.ContextIdle, null);
我有一个基于 Datagrid 的自定义控件。我想要实现的是对行进行多项选择,然后右键单击行选择器以打开上下文菜单。 实际发生了什么:在用户右键单击行选择器之前,多行的选择工作正常。完成后,只有一行被选中,即鼠标右键单击的那一行。
我需要做的事情:允许用户进行多项选择(行具有可供选择的样式)并右键单击以打开上下文菜单而不丢失先前的选择。
我需要做什么?
不,根本不会发生那样的事情。确保将 DataGridView
MultiSelect
属性 设置为 TRUE
。然后将您的 ContextMenustrip
控件分配给数据网格的 ContextMenuStrip
属性.
这应该可以完成工作,并且鼠标右键单击也应该保留多项选择,除非在您的代码后面某处您正在更改它。
在这种情况下,您将不得不调试并找出调试的位置和方式。
刚刚重新访问代码,发现我没有更新 SelectedItems IList:
Dispatcher.BeginInvoke(new Action(delegate
{
foreach (var item in e.RemovedItems)
{
SelectedItems.Add(item);
}
SelectedItemsList.Add(SelectedItem);
}), System.Windows.Threading.DispatcherPriority.ContextIdle, null);