ComboBox вызывает странное поведение в форме Windows - PullRequest
0 голосов
/ 11 августа 2010

Я замечаю странное поведение, когда добавляю ComboBox к моей Windows Form: когда я изменяю размер Form без ComboBox, он ведет себя правильно, и меню «Файл» остается там, где он должен оставаться, даже когда я перетаскиваю правый угол как можно дальше влево. Когда я добавляю ComboBox и пытаюсь сделать то же самое, меню «Файл» сдвигается влево ... в моем реальном приложении меню «Файл» полностью исчезает, но оно основано на той же проблеме.

Вот «нормальное» изменение размера, когда меню файла находится в правильном месте:

Normal

А вот «ненормальное» изменение размера, при котором меню файлов, групповой блок и полоса состояния все сдвигаются влево:

Abnormal

Единственное различие между этими двумя формами заключается в ComboBox ... кто-нибудь имеет какие-либо идеи, почему это может происходить и как я могу это исправить?

Обновление

Значение / свойство Left файла MenuStrip становится отрицательным, и это делает вещи действительно уродливыми, потому что у меня есть DataGridView ниже групповых полей, которое всегда смещено вправо от 0 на фиксированный отступ ( скажем 50 px). В этот момент расстояние между левой стороной DataGridView и левой стороной меню «Файл» становится равным 105 пикселей, так как меню «Файл» теперь имеет значение -55.

Negative

Обратите внимание, что даже когда я прокручиваю полностью влево, меню «Файл» все еще остается на -55 ... поэтому, если у меня есть что-то смещение от 0 на 50 (как мой GridView), то на этом этапе разница между их будет 105 пикселей.

Ответы [ 3 ]

2 голосов
/ 11 августа 2010

Это выглядит так, потому что область прокрутки отличается между двумя формами. Это потому, что теперь у вас есть контроль над формой, которая принимает Фокус. Поскольку поле со списком имеет фокус, область прокрутки регулируется, чтобы она оставалась видимой. Из-за этого меню «Файл», кажется, перемещается влево, но фактически находится в том же месте на форме.

1 голос
/ 11 августа 2010

Похоже, что автопрокрутка формы прокручивает поле со списком, чтобы увидеть, где находится курсор, потому что он имеет фокус ввода.

1 голос
/ 11 августа 2010

Автоматическая прокрутка пытается держать курсор в поле зрения при изменении размера.

Вы можете использовать свойства AutoScrollMargin, AutoScrollMinSize, MinimumSize, MinimumSize, чтобы не выглядело слишком плохо, когда размер формы до крайностей.

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

Создание макета, работающего в полноэкранном режиме и небольшого размера, не так просто, вам может даже потребоваться полностью изменить макет при получении формы.слишком маленький.

...