gpt4 book ai didi

c# WinForms - 在单击某些项目后防止 ContextMenu 关闭

转载 作者:可可西里 更新时间:2023-11-01 08:56:46 24 4
gpt4 key购买 nike

我正在使用 System.Windows.Forms.ContextMenu。我想这样做,所以当您单击某些按钮时,它不会关闭菜单。现在我让它工作,只要你点击一个,它就会在同一位置重新打开菜单。唯一的问题是它看起来很糟糕,因为您可以看到菜单闪烁。有没有更好的方法来做到这一点?

WPF 的 ContextMenu 具有 StaysOpen 属性,但 Win Forms 没有。 (有什么方法可以使用 WPF 的 ContextMenu 吗?)我不想使用 ContextMenuStrip,它可以做到这一点,因为 ContextMenu 看起来好多了。

编辑:

我不会将此标记为解决方案,因为这样做不好。如果您需要按照我的问题进行操作,一种方法是从 WPF 创建一个 UserControl,然后将带有上下文菜单的对象放入其中,然后向其添加上下文菜单。现在因为它在 WPF 中,所以在您不想在单击时关闭菜单的按钮上,在 MenuItem 上将属性 StaysOpenOnClick 设置为 true。然后将此 UserControl 放入您的 WinForms 应用程序。

最佳答案

您可以像这样打开上下文菜单:

private bool CloseContextMenu = true; //Class Variable

然后甚至将 MouseDown 添加到上下文菜单项中:

private void menu1ToolStripMenuItem_MouseDown(object sender, MouseEventArgs e)
{
CloseContextMenu = false;
}

然后在您的上下文菜单关闭事件中:

private void contextMenuStrip1_Closing(object sender, ToolStripDropDownClosingEventArgs e)
{
e.Cancel = !CloseContextMenu;
CloseContextMenu = true;
}

然后您可以将 CloseContextMenu = false 添加到您想要的任何菜单事件。

希望这对您有所帮助。

关于c# WinForms - 在单击某些项目后防止 ContextMenu 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11657712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com