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);
}
}
所以你可以关闭这个问题:
将menu
对象移动到一个可以被contextmenu_saveimageclick处理程序访问的范围,然后在处理程序中包含这一行:
menu.Hide();
详细说明一下,上下文菜单是一个顶级窗口,它将出现在任何其他非顶级窗口之上,包括文件对话框。而且,单击一个项目不会自动隐藏上下文菜单,至少在事件处理程序执行之前不会,这就是为什么您需要在弹出对话框之前手动执行该操作。