2

私たちの環境: Visual Studio 2010、c#、.net 4 クライアント プロファイル。

メインフォームにメニューストリップを含む Winforms アプリケーションがあります。メニューストリップの項目には、画像 (64x64) とテキストの両方が含まれています。メイン フォームには、5 つのタブを含む TabControl もあります。メイン フォームの 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

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

(編集:2番目のソリューションを追加)

これは、タイマー コントロールと 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 に答える