c# - SaveFileDialog的上下文菜单错误

本文关键字:菜单 错误 上下文 SaveFileDialog | 更新日期: 2023-09-27 18:13:37

我在pictureEdit (Devexpress)上使用上下文菜单,所以当用户右键单击并选择菜单项时,它应该保存文件。但是当saveDialog窗口打开时,上下文菜单仍然显示。

如何移除这个bug?

    private void InitializeContextMenu()
    {
        ui_PictureEdit.Properties.ContextMenuStrip = new ContextMenuStrip();
        var menu = new ContextMenuStrip();
        menu.Items.Add("Save image");
        menu.ItemClicked += ContextMenu_SaveImageClicked;
        menu.Show();
        ui_PictureEdit.Properties.ContextMenuStrip = menu;
    }

        using (var dialog = new SaveFileDialog())
        {
            dialog.DefaultExt = "*.png";
            dialog.Filter = "Image files (*.png)|*.png|All files (*.*)|*.*";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                ui_PictureEdit.Image.Save(dialog.FileName);
            }
        }

c# - SaveFileDialog的上下文菜单错误

所以你可以关闭这个问题:

menu对象移动到一个可以被contextmenu_saveimageclick处理程序访问的范围,然后在处理程序中包含这一行:

menu.Hide();

详细说明一下,上下文菜单是一个顶级窗口,它将出现在任何其他非顶级窗口之上,包括文件对话框。而且,单击一个项目不会自动隐藏上下文菜单,至少在事件处理程序执行之前不会,这就是为什么您需要在弹出对话框之前手动执行该操作。