Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Devexpress数据网格上下文菜单消失_C#_.net_Winforms_Datagrid_Devexpress - Fatal编程技术网

C# Devexpress数据网格上下文菜单消失

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

我对DataGrid上下文菜单有一个奇怪的问题。单击datagrid中的项目后,我从服务器加载项目详细信息。加载详细信息时,应用程序显示一个等待屏幕:

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)返回