2010-11-22 9 views
3

私は2つのモニターを持っています。私は、私の左のモニタの端の近くにある私のC#アプリケーションのMenuStripにアクセスすると、いくつかの奇妙な動作を見ている。C#複数のモニター間でのメニュー位置の制御

ケース1:このスクリーンショットでは、ウィンドウが左側のモニタのエッジにかなり近いところにSubMenu1を開いています。 SubMenu2は、右モニタの左端に表示されます。

Gap

ケース2:私は、左に数ピクセル自分のアプリケーションを移動し、今SubMenu2がSubMenu1の左側に表示されます。私の意見で

No Gap

、ケース2は、非常に良く見えます。ケース2のように常にC#にメニューを表示させる方法はありますか?

答えて

1

プログラムでコントロールでき、SubMenu1のRightToLeftプロパティをRightToLeft.Yesに設定します。これにはいくつかの副作用があります。テキストは右揃えになり、矢印は正しい方法を示します。おそらく、 "Menu"項目のDropDownOpeningイベントハンドラでプロパティを設定したいと思うでしょう。

+0

しかし、フォームが左端に近い右のウィンドウにあれば、まったく同じ問題は起こりませんか? – Nobody

+0

@rmx - DropDownOpeningイベントの記述に注目してください。 –

2

独自のMenuStripコンポーネントを書くのではなく、MenuItemが開くべき側面を指定する方法はありません。

さらに、これがソフトウェアの特定の要件(私が疑うにもかかわらず)でない限り、あまり心配する必要はありません。

+0

いつも使用する特定の面を指定したくありません。しかし、サブメニューを配置するためにヒューリスティックが使用されていることは明らかです。サブメニューを配置するときにギャップを残さないようにしたいと考えています。 – mchr

関連する問題