延迟在menustrip中打开子菜单

时间:2011-06-01 14:34:50

标签: winforms user-interface submenu menustrip

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

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

但是,我们的菜单有很多子菜单项,由于我们使用主菜单选择活动标签,我们希望子菜单项只有在用户点击菜单项一段时间后才会出现,不是即时的。否则,每当用户改变他/她的活动视图(通过选择tabPage)时,子菜单就出现在屏幕上,因为他/她点击了包含子菜单的menustrip项目。

这可能吗?

1 个答案:

答案 0 :(得分:1)

我不完全理解其基本原理,但您可以使用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