2016-08-30 3 views
-1

Мне нужна помощь с тем, что я могу сказать поставщику, разрабатывающему форму в приложении, в котором у меня нет источника. Мы обнаружили ошибку с одной из их больших Winforms, где, если она открыта в сеансе RDP в 1024x768, нижняя 250px или около того, которая составляет ~ 1000px, является недостижимой.Полосы прокрутки, если форма больше, чем экран

Им сложно сказать, что нет решения, которое, как я знаю, было бессмыслицей, но у меня нет среды Visual Studio, созданной для создания доказательства концепции, чтобы проверить себя, а затем показать их иначе.

Из того, что я могу сказать из других вопросов по документации StackOverflow и страниц документации MSDN, необходимо устранить проблему следующим образом: форма будет автоматически масштабироваться до максимальной отображаемой высоты, а затем поместить вертикальную полосу прокрутки внутрь, чтобы можно было просматривать нижнюю часть формы. Достигнутся ли следующие цели?

public MyTallForm() 
{ 
    InitializeComponent(); 
    this.AutoScroll = true 
    this.AutoSize = true 
} 
+0

Кому-то, кто отказался от этого вопроса, просьба уточнить, почему я могу решить проблему. Или, как это более вероятно, нет. – bdx

+2

Я не спускал вниз, но я могу понять, почему кто-то будет; практически не имея информации о внедрении формы и ее элементов управления, невозможно точно сказать, будет ли это работать, или какая комбинация или изменение должны быть сделаны. –

ответ

3

AutoSize реагирует на изменение управления в виде растущей & усадки формы по мере необходимости.

AutoScroll реагирует на изменение элементов управления внутри формы путем отображения/скрытия полос прокрутки.

Таким образом, AutoScroll не будет активирован, если AutoSize активен, так как форма всегда достаточно велика. Если проблема возникает из-за слишком малого разрешения дисплея, вам понадобится AutoScroll.

Если форма остается открытым между RDP сессий, возможно, потребуется, чтобы подписаться на DisplaySettingsChanged, чтобы быть в курсе изменений разрешения, а также просто Maximize (не уверен, если это уже развернуто, переключаясь на минимизировано и обратно Развернутое возможно?) Или используйте GetWorkingArea если потребуется подробный размер.

+0

Чтобы уточнить, вы говорите, что мне нужно будет только сказать им, чтобы установить инициализацию 'this.AutoScroll = true', чтобы он не позволял высоте формы быть больше, чем доступное разрешение экрана или сеанса RDP? Форма не будет оставаться открытой между сеансами, что упростит ее как минимум. – bdx

+1

@bdx 'WindowState = FormWindowState.Maximized' и' AutoScroll = true' при инициализации «должны» работать, если элементы управления действуют аналогично элементам управления Microsoft –

2

Set AutoScroll = True и AutoScaleMode to Dpi В свойствах формы See attached image

Надеется, что это помогает.

Смежные вопросы