C# menustrip下拉菜单自动收回问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# menustrip下拉菜单自动收回问题相关的知识,希望对你有一定的参考价值。
怎么能让这个菜单在鼠标移开的时候就收回呢?
//指定横向菜单单击事件
tm.MouseEnter += new EventHandler(tm_MouseEnter);
tm.MouseLeave += new EventHandler(tm_MouseLeave);
//指定下拉菜单单击事件
tm1.Click += new EventHandler(tm1_Click);
//即时显示下拉菜单
void tm_MouseEnter(object sender, EventArgs e)
timer1.Stop();
ToolStripMenuItem tm = (ToolStripMenuItem)sender;
tm.ShowDropDown();
//即时收回下拉菜单
void tm_MouseLeave(object sender,EventArgs e)
ToolStripDropDownItem ts = (ToolStripDropDownItem)sender;
ToolStripMenuItem tm = (ToolStripMenuItem)sender;
tm.HideDropDown();//这里该怎么写呢,现在是只要离开横向菜单就收回了
就是想让鼠标离开这个下拉菜单的时候就收回,或者在桌面上点一下就收回也可以
追答看看是否附件里面的效果?
呵呵 你的现在和我的一样,你看能点到新建吗 我的现在就这样
本回答被提问者采纳C# WPF 菜单条控制器
【中文标题】C# WPF 菜单条控制器【英文标题】:C# WPF MenuStrip Controller 【发布时间】:2016-11-16 16:32:43 【问题描述】:我正在尝试通过创建 WindowsFormsHost 并添加 MenuStrip 作为其子项,在 C# 中使用 WPF 制作 MenuBar。请注意,我使用 WindowsFormsHost 控制器的属性页添加菜单和菜单项。
当我完成后,项目构建并成功运行,但在生成的“xaml”文件中显示一些错误,并且设计器没有加载设计。
这是生成的 XAML 代码
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" x:Class="FrontEnd.AppMainWindow"
Title="AppMainWindow" Height="351" Width="826">
<Grid>
<WindowsFormsHost x:Name="menuStripHost" HorizontalAlignment="Left" Height="23" VerticalAlignment="Top" Width="818">
<Forms:MenuStrip Visible="True" Name="appMainMenu">
<Forms:MenuStrip.Items>
<Forms:ToolStripMenuItem Text="File">
<Forms:ToolStripMenuItem.DropDownItems>
<Forms:ToolStripMenuItem ShortcutKeys="Ctrl+N" Text="New Project"/>
<Forms:ToolStripMenuItem ShortcutKeys="Ctrl+O" Text="Open Project"/>
<Forms:ToolStripMenuItem Text="Exit"/>
</Forms:ToolStripMenuItem.DropDownItems>
</Forms:ToolStripMenuItem>
<Forms:ToolStripMenuItem Text="View">
<Forms:ToolStripMenuItem.DropDownItems>
<Forms:ToolStripMenuItem Text="Configuration Window"/>
</Forms:ToolStripMenuItem.DropDownItems>
</Forms:ToolStripMenuItem>
<Forms:ToolStripMenuItem Text="Help">
<Forms:ToolStripMenuItem.DropDownItems>
<Forms:ToolStripMenuItem Text="User Manual"/>
<Forms:ToolStripMenuItem Text="Help"/>
</Forms:ToolStripMenuItem.DropDownItems>
</Forms:ToolStripMenuItem>
</Forms:MenuStrip.Items>
</Forms:MenuStrip>
</WindowsFormsHost>
</Grid></Window>
这是错误
错误 2 无法将指定的值分配给集合。应为以下类型:“字符串”。
标签为“Forms:ToolStripMenuItem”的所有行都会出现相同的错误
更新: 尝试删除 ShortcutKeys 属性,问题依然存在(与上述相同的错误)。 这是修改后的代码...
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" x:Class="FrontEnd.AppMainWindow"
Title="AppMainWindow" Height="351" Width="826">
<Grid>
<WindowsFormsHost x:Name="menuStripHost" HorizontalAlignment="Left" Height="23" VerticalAlignment="Top" Width="818">
<Forms:MenuStrip Visible="True" Name="appMainMenu">
<Forms:MenuStrip.Items>
<Forms:ToolStripMenuItem Text="File">
<Forms:ToolStripMenuItem.DropDownItems>
<Forms:ToolStripMenuItem Text="New Project"/>
<Forms:ToolStripMenuItem Text="Open Project"/>
<Forms:ToolStripMenuItem Text="Exit"/>
</Forms:ToolStripMenuItem.DropDownItems>
</Forms:ToolStripMenuItem>
<Forms:ToolStripMenuItem Text="View">
<Forms:ToolStripMenuItem.DropDownItems>
<Forms:ToolStripMenuItem Text="Configuration Window"/>
</Forms:ToolStripMenuItem.DropDownItems>
</Forms:ToolStripMenuItem>
<Forms:ToolStripMenuItem Text="Help">
<Forms:ToolStripMenuItem.DropDownItems>
<Forms:ToolStripMenuItem Text="User Manual"/>
<Forms:ToolStripMenuItem Text="Help"/>
</Forms:ToolStripMenuItem.DropDownItems>
</Forms:ToolStripMenuItem>
</Forms:MenuStrip.Items>
</Forms:MenuStrip>
</WindowsFormsHost>
</Grid></Window>
【问题讨论】:
找到了一个很好的替代方法来创建 WindowsFormsHost 并在其中创建 MenuStrip,我使用 WPF Menu 和 MenuItem 控制器来实现菜单。这是link 用一个例子来介绍他们 【参考方案1】:我认为在您的 ToolStripMenuItems 中,您正在为 ShortcutKeys 属性分配一个字符串: ShortcutKeys="Ctrl+N"... 根据文档,这应该是“键”类型; https://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripmenuitem.shortcutkeys%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
【讨论】:
尝试删除 ShortcutKeys 属性,问题依旧存在... 你确定吗?您可以将您现在拥有的内容添加到问题的底部吗? 请再看一下这个问题,因为我按照您的要求进行了更新。以上是关于C# menustrip下拉菜单自动收回问题的主要内容,如果未能解决你的问题,请参考以下文章
html 链接点击一下显示下拉内容(再点击一下自动收回),上一次点击内容自动收回,代码怎么写?谢谢!