5

MenuStrip を使用して簡単なフォームを作成します。MenuStripは(デフォルト)LayoutStyleに設定されています。HorizontalStackWithOverflow

MenuStrip に関する MSDN リファレンスによると、そのLayoutStyleプロパティは ToolStrip から継承されます。LayoutStyle の可能な値の 1 つはHorizontalStackWithOverflow、デフォルト設定でもあります。この設定により、Overflowプロパティが AsNeeded に設定されたアイテムがオーバーフロー ボタンに移動されます。

アプリケーションを実行してフォームのサイズを変更すると、メニューが完全に収まらなくなりますが、これは起こりません。ToolStripMenuItems Overflow プロパティを AsNeeded に設定しましたが、フォームのサイズを変更すると、右側のメニュー項目が消えてしまいます。

ドキュメンテーションは間違っていますか? MenuStrip ではなく ToolStrip でのみオーバーフロー ボタンを取得できますか? または、物事を機能させるために他に何かしなければならないことがありますか? それとも、ドキュメントを読み間違えているだけですか?

4

2 に答える 2

8

私はちょうど同じ問題を抱えていて、それを機能させる方法を見つけました。

MenuStrip では、次のように設定する必要があります。

myMenuStrip.CanOverflow = True

デフォルトは false です。

次に、MenuItem ごとに設定する必要があります。

myToolStripMenuItem.Overflow = ToolStripItemOverflow.AsNeeded

また

myToolStripMenuItem.Overflow = ToolStripItemOverflow.Always

デフォルトは ToolStripItemOverflow.Never です。

参考文献:

MenuStrip.CanOverflow

ToolStripMenuItem.Overflow

于 2011-10-14T00:26:56.643 に答える
6

ToolStrip クラスには、このような毛がたくさんあります。ここでの適切な選択は、メニュー項目をラップするための LayoutStyle = Flow だと思います。これは、組み込みの Windows メニューが機能する方法です。

ただし、これが引き起こすレイアウトの問題に対処する必要があります。Dock = Fill を使用してフォームに Panel を配置し、メニュー ストリップにより多くのスペースが必要になったときにすべてのコントロールが自動的に下に移動するようにします。

于 2011-01-18T16:58:13.423 に答える