2010-11-22 2 views
3

У меня есть два монитора. Я вижу некоторое странное поведение, когда я обращаюсь к MenuStrip моего приложения C# рядом с краем моего левого монитора.C# Позиция меню управления на нескольких мониторах

Корпус 1: на этом скриншоте я открыл SubMenu1, когда окно достаточно близко к краю моего левого монитора. SubMenu2 отображается на самом левом краю моего правого монитора.

Gap

Случай 2: Я затем переместить мое приложение несколько пикселей влево и теперь SubMenu2 появляется слева от SubMenu1.

No Gap

На мой взгляд, дело 2 выглядит намного лучше. Есть ли способ заставить C# всегда показывать меню, как в случае 2?

ответ

1

Вы можете управлять им в своей программе, установить свойство RightToLeft SubMenu1 в RightToLeft.Yes. У этого есть некоторые побочные эффекты, текст теперь будет выровнен по правому краю, и стрелка укажет правильный путь. Вероятно, вы захотите установить свойство в обработчике события DropDownOpening для элемента «Меню».

+0

Но разве у вас теперь была бы такая же проблема, если бы форма была в правом окне, рядом с левым краем? – Nobody 2010-11-23 10:59:14

2

Короткая запись вашего собственного MenuStrip компонента, нет способа указать, с какой стороны должен открываться MenuItem.

Кроме того, если это не является особым требованием к программному обеспечению (которое, я очень сомневаюсь), я бы не стал слишком беспокоиться об этом.

+0

Я не хочу указывать конкретную сторону, которая всегда будет использоваться. Тем не менее, существует определенная эвристика, используемая для размещения подменю, и я хочу заставить это избегать оставления пробела при размещении подменю. – mchr 2010-11-22 16:04:06