2

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

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

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

这可能吗?

4

1 回答 1

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
于 2011-06-02T01:29:33.603 回答