Ответ 1
Установить AutoScroll = True
В свойствах формы
Я разрабатываю приложение для форм Windows. В моем приложении у меня есть привязанные элементы управления к формам, так что формы могут быть увеличены, и элементы управления будут упорядочены соответствующим образом. Это приложение должно поддерживать разные значения DPI.
Я установил привязки некоторых элементов управления снизу, справа и внизу справа. Свойству AutoScroll для форм присваивается значение true. Когда значение DPI по умолчанию (96) работает, как и ожидалось. Но проблема в том, что экран загружается в более высокий DPI (например, 120), даже если включены полосы прокрутки, элементы управления, которые привязаны к нижней и нижней правой части, не могут быть видны.
Кто-нибудь может посоветовать мне эту проблему?
С уважением, Eranga
Установить AutoScroll = True
В свойствах формы
например, предположим, что у нас есть панель, у которой есть id "panel1"
то мы можем применить в качестве
panel1.autoscroll=true;
panel1.BorderStyle = BorderStyle.FixedSingle;
чтобы установить ширину и высоту прокрутки
panel1.SetAutoScrollMargin(int x,int y);
Это старый пост, но проблема продолжается, и связанные сообщения только продолжают поступать на SO
!
Я делаю здесь некроповую проблему, а не рассматриваю более свежий вопрос только потому, что он приходит поверх моего google search
Вопрос прост: "почему не будут проклятые полосы прокрутки на моем ScrollableControl
?"
Но не может быть конкретного, окончательного ответа. Потому что причиной являются легионы. Потому что независимо от того, появляются ли полосы прокрутки в элементе управления:
Легко попасть в ловушку беспорядочно прокручивающихся значений до тех пор, пока корова не вернутся домой. Или идите в i/webs и надейтесь найти некоторые SO
foos. Но о, дорогая. Вот несколько связанных сообщений SO
с выдающимся разнообразием предлагаемых резолюций:
Горизонтальная полоса прокрутки не видна в DataGridView
Горизонтальная полоса прокрутки, которая не отображается в моем текстовом поле
Как установить полосу прокрутки в форме Windows
Прокручиваемая форма в С#, AutoScroll = true не работает
Как получить полосу прокрутки в панели в VB.Net?
Есть экраны страниц свойств VS-designer
(например, здесь) и даже некоторые экстремальные решения на основе кода... мои избранные:
Добавить вертикальную полосу прокрутки на панель в .NET
как добавить элемент управления Vscroll для формирования в Visualbasic.net?
/sighs/
.. в виде минимального решения github, чтобы изучить некоторые из voodo-ов прокрутки .NET:
https://github.com/violet313/TestWinForms/tree/Test1-Body-Panel
Это решение Visual Studio 2015
с использованием .NET4.52 framework
.
В решении я пытаюсь создать форму, которая реагирует на некоторые динамические текстовые данные, которые должны отображаться. вот основная планировка, которую я в конечном итоге ищу:
--------------------------------------------------
| fixed-size form header | |
------------------------------------| side |
| | panel |
| dynamic content panel | stuff |
| | |
--------------------------------------------------
| fixed-size form trailer |
--------------------------------------------------
Мне нужна форма:
ответьте на динамический контент:
Захватите его, пройдите каждый из (только 9, начиная с 95dccc5), и затем проверьте свои требования разумным и инкрементным образом. не забудьте разветкиться, когда вы делаете сомнительное изменение состояния.
Irl: может быть, я толстый, но мне потребовалось более часа, читая MSDN, пытающиеся (и не сумев) выяснить, какие непредвиденные обстоятельства контроля формы .NET. делая структурированную пробную и ошибку, таким образом, мне потребовалось всего 20 минут, чтобы получить то, что я хотел.
y~bwc
Я знаю, что это здесь yeaz ~, но кто заботится?, но я должен был получить, если бы с моей груди. heh:
гррр. необходимость отменить ответ и ответить на этот вопрос возникает из моей потребности в выгодно взять на себя контрактную работу Microsoft. кассиры могут быть относительно (от разработчика pov) нетехнических и, прочитав лоты включая слова: быстрый, простой, прямой, безопасный, и т.д., уходят с впечатлением, что вещи .NETish - это прогулка в парк. Моя проблема заключается в том, что у меня тогда возникнут трудности пытаясь разумно объяснить, почему им, возможно, придется заплатить мне за n-дневный стоит того, чтобы получить простую полосу прокрутки, которая появится на отзывчивая форма.
По этому поводу я так и не добрался. лол. я провел несколько часов пробираясь в MSDN blahs, пытаясь добиться этого. а затем зевнул, отказались и продвинулись с прагматичной реализацией. который был принято. но теперь это w/end, и я дурак, который не может позволить вещи будут.
Я читал эту страницу и могу сказать, что она обеспечивает точное и простое решение вашей проблемы!
Я проверил это, и это работало хорошо для меня.
Инструкция:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
InitializeComponent();
)[DllImport("shcore.dll")]
static extern int SetProcessDpiAwareness(_Process_DPI_Awareness value);
enum _Process_DPI_Awareness
{
Process_DPI_Unaware = 0,
Process_System_DPI_Aware = 1,
Process_Per_Monitor_DPI_Aware = 2
}
InitializeComponent();
)SetProcessDpiAwareness(_Process_DPI_Awareness.Process_DPI_Unaware);