C# Devexpress数据网格上下文菜单消失
我对DataGrid上下文菜单有一个奇怪的问题。单击datagrid中的项目后,我从服务器加载项目详细信息。加载详细信息时,应用程序显示一个等待屏幕:C# Devexpress数据网格上下文菜单消失,c#,.net,winforms,datagrid,devexpress,C#,.net,Winforms,Datagrid,Devexpress,我对DataGrid上下文菜单有一个奇怪的问题。单击datagrid中的项目后,我从服务器加载项目详细信息。加载详细信息时,应用程序显示一个等待屏幕: private void gridViewOrders_MouseDown (object sender, MouseEventArgs e) { GridView gv = sender as GridView; if (gv != null) { ShowWaitScreen (messag
private void gridViewOrders_MouseDown (object sender, MouseEventArgs e)
{
GridView gv = sender as GridView;
if (gv != null)
{
ShowWaitScreen (message);
GridHitInfo ghi = gv.CalcHitInfo (e.Location);
...
CloseWaitScreen ( );
}
}
当用户单击鼠标右键时,应显示上下文菜单:
private void gridViewOrders_PopupMenuShowing (object sender, PopupMenuShowingEventArgs e)
{
if (e.MenuType == GridMenuType.Row)
{
DXMenuItem item = new DXMenuItem ("Delete", OnBtnDeleteOrder_Click);
e.Menu.Items.Add (item);
}
}
但是菜单马上就消失了。当我删除waitscreen时,会显示上下文菜单,用户可以选择“删除”菜单项。有什么提示吗,我如何解决这个问题?谢谢大家! 解决我的问题的一个好办法是执行以下操作:
private void gridViewOrders_MouseDown (object sender, MouseEventArgs e)
{
GridView gv = sender as GridView;
if (gv != null)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
ShowWaitScreen (message);
...
CloseWaitScreen ( )
}
}
}
感谢DevExpress团队的提示 我真的不认为你需要在MouseDown事件中处理任何事情 此代码适用于GridView:
private void gridView1_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e)
{
GridView view = sender as GridView;
if (e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Row)
{
int rowHandle = e.HitInfo.RowHandle;
e.Menu.Items.Clear();
DXMenuItem zaznaczItem = new DXMenuItem("Zaznacz wszystkie", new EventHandler(zaznacz_Click));
DXMenuItem odznaczItem = new DXMenuItem("Odznacz wszystkie", new EventHandler(odznacz_Click));
e.Menu.Items.Add(zaznaczItem);
e.Menu.Items.Add(odznaczItem);
}
}
void zaznacz_Click(object sender, EventArgs e)
{
foreach (DataRow dr in (gcKontrahent.DataSource as DataTable).Rows)
{
dr["checkbox"] = true;
}
}
Handlerzaznacz_Click只是所选菜单项的处理程序示例odznacz_点击类似,所以我没有发布。我没有DataGrid的例子,所以如果这不是一个好的解决方案,请原谅我。以GridView中复杂的上下文菜单处理为例。我可以想象,当他们右键单击,仅左键单击时,您不想显示等待屏幕,对吗
if(e.Button==MouseButtons.Right)返回这主意不错,我会试试的。