延迟打开菜单条中的子菜单



我们的环境:Visual Studio 2010,c#,.net 4客户端配置文件。

我们有一个Winforms应用程序,它在主窗体中包含一个菜单条。菜单条的项目包含图像(64x64)和文本。主窗体还有一个TabControl,它包含5个选项卡。在主窗体的OnLoad()方法中,我们隐藏TabControl标头,使它们不可见,因此不可单击。相反,当用户点击菜单条中的一个项目时,我们会切换活动选项卡

然而,我们的菜单有许多子菜单项,由于我们使用主菜单条来选择活动选项卡,我们希望子菜单项仅在用户单击菜单项一段时间后出现,而不是立即出现。否则,每当用户更改他/她的活动视图(通过选择选项卡页面)时,子菜单就会出现在屏幕上,因为他/她单击了包含子菜单的菜单条项目。

这可能吗?

我不完全理解其原理,但您可以使用MouseDown处理程序和睡眠功能延迟子菜单的显示,如下所示:

Private Sub FileToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FileToolStripMenuItem.MouseDown
System.Threading.Thread.Sleep(2000) ' wait two seconds
End Sub

==========================

(编辑:添加第二个解决方案)

您可以使用定时器控制和ShowDropDown/HideDropDown:来完成此操作

Private Sub FileToolStripMenuItem_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles FileToolStripMenuItem.MouseDown
' show tab here'
FileToolStripMenuItem.HideDropDown()
Timer1.Interval = 500
Timer1.Start()
End Sub
Private Sub FileToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FileToolStripMenuItem.Click
FileToolStripMenuItem.HideDropDown()
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Timer1.Stop()
FileToolStripMenuItem.ShowDropDown()
End Sub

相关内容

  • 没有找到相关文章