Я по-прежнему новичок в Microsoft Visual Studio и С#, но чтобы сделать приложение форм Windows определенным размером в дизайнерском режиме в Visual Studio 2013, вы просто перетаскиваете концы, и он автоматически делает это так, как вы его оцениваете, Это удобно, но имеет свои недостатки. Одним из главных является то, что когда вы максимизируете приложение форм Windows, все кнопки и все, что вы создали, не меняют размер, чтобы он соответствовал экрану. Есть ли специальный параметр или что-то, что мне не хватает, чтобы сделать все, что входит в размер формы приложения формы выигрыша, с тем, как пользователь может изменить размер приложения?
Malcolm 23 янв. 2014, в 21:14
Поделиться
Поскольку вы новичок, вы, вероятно, не знаете, но WPF более мощный, чем winforms, и делает что-то вроде этого очень простым. Winforms сейчас довольно старая технология.
Magus 23 янв. 2014, в 19:50
Автоматическое масштабирование элементов управления будет очень сложным. Вы можете использовать элементы управления макетом, такие как TableLayoutPanel чтобы помочь сделать более TableLayoutPanel расположение элементов управления, но они всегда будут иметь одинаковый размер, а это означает, что эта кнопка «ОК» может выглядеть немного крошечной, когда вы максимизируете на гораздо более высоком разрешении дисплей.
«Резиновый» интерфейс в Windows Forms. Как растянуть элементы на форме при растягивании формы.
DonBoitnott 23 янв. 2014, в 20:05
Вы когда-нибудь видели программу, которая на самом деле изменяет размеры кнопок, когда вы максимизируете ее окно? Следуйте указаниям здесь, сделайте так, как работают другие программы. Если вы не готовы к этому, просто установите для свойства MaximizeBox значение False.
Hans Passant 23 янв. 2014, в 20:41
Ок, все, спасибо за вашу поддержку.
Malcolm 24 янв. 2014, в 21:28
Показать ещё 2 комментария
Поделиться:
visual-studio-2013
windows-forms-designer
3 ответа
Лучший ответ
Вы должны вводить все свои элементы управления в TableLayoutPanel. Вы можете управлять перемещением строки и столбца. Один улов, только один элемент управления на ячейку, поэтому иногда вам нужно либо вложить другой TableLayoutPanel, либо прикрепить панель управления обратно в ячейку, чтобы получить все, что вам нужно на экране. Слева — моя форма, как она была разработана, справа — меняет размер при работе в режиме отладки.
Глубокое погружение
1 TablelayoutPanel из 4 столбцов и 5 строк, 1 групповой панели, 2 кнопки
Столбец 0 = исправлено при 20px
Столбец 1 = 100%
Столбец 2 = автоматическое управление для управления
Столбец 3 = Исправлено в 20px
Строка 0 = Исправлено при 20px
Строка 1 = 100%
Строка 2 = Исправлено в 20px
Строка 3 = автоматическая настройка для управления
Строка 2 = Исправлено в 20px
Button1 в столбце 1 на строке 3, справа на правой стороне Button2 в столбце 2 на строке 3, справа на правой стороне Groupbox в колонке 1 в строке 1, цветной для видимости, dock = Fill, ColSpan = 2
TableLayoutPanel Dock = Fill
Как изменить размер окна раз и навсегда. Фиксируем размер окна.
wruckie 23 янв. 2014, в 19:04
Поделиться
если вы установите максимальное состояние окна по умолчанию и поместите этот код в свою форму:
Console.WriteLine(this.Size);
вы можете видеть на консоли максимальный размер окна. таким образом вы можете изменить размер своей формы в дизайнере, чтобы вы могли легко добавлять и перемещать контуры!
ls97 05 март 2015, в 09:50
Поделиться
Вы должны решить, какой элемент управления изменится с помощью окна. Выберите только один, если возможно, и, возможно, центр, который также будет выходом. Затем упорядочьте входные контрулы вокруг него (например, кнопки на верхних или нижних краях) и привяжите их к краям (свойство Anchor). Не изменяйте размеры элементов управления вводами, пользователям это не нравится.
С другой стороны, чем больше недвижимости вы можете дать на выходе, тем лучше. Если вы не уверены в том, о чем я говорю, просто измените размер любого обычного настольного приложения и наблюдайте, как входы остаются привязанными и не меняют размер, в то время как центральная часть получает все преимущества изменения размера.
Изменить: Кроме того, вы можете прикреплять панели на южном, северном, восточном и западном участках окна формы. Вы действительно должны попытаться потратить час или около того. Вы можете понять, что лучше всего, только пытаясь, потому что это очень важно для удобства использования, а не для чистой технической проблемы.
Только одно напоминание: не изменяйте размеры элементов управления, пока пользователь изменяет размер окна. Что бы вы ни делали с элементами управления, сначала приостановите компоновку, вызвав SuspendLayout() в форме. В конце вызывается ResumeLayout().
pid 23 янв. 2014, в 17:55
Поделиться
Ещё вопросы
- 1 JAVA, какие элементы списка не находятся в другом списке
- 0 Выберите двойным щелчком или одной буквой div, который делает фокус ввода
- 0 Написать Html Img ID с помощью JavaScript
- 0 передача массива в предложении where в соединении
- 0 Угловая ошибка: [by: areq]
- 0 Создать меню с двумя подменю
- 1 Установить Enum Array на основе другого массива Enum в той же модели — Mongoose
- 0 Угловая директива для пользовательской проверки
- 1 java.net.ProtocolException: метод не поддерживает тело запроса: GET
- 0 Запрос CQL SELECT зависает при подключении к промежуточным серверам Cassandra?
- 1 Как создать проект узла, используя npm init? Застрял в версии
- 1 Удалить дубликаты в массиве Java [duplicate]
- 0 Отдельные файлы для каждого контроллера в Angular.js
- 0 MySQL выбрать с использованием даты и времени, сгруппировать только по дате
- 0 Простая карусель, которая обновляет свои кнопки навигации с количеством элементов контента
- 1 MOXy XmlNameTransformer для нескольких пакетов
- 0 Как отобразить строку как дату? [Дубликат]
- 1 Обход XML-схем не удался
- 1 Итеративный объект ассоциативного массива
- 1 доступ к базе данных не обновляется в DataGridView после удаления строки
- 1 React Native Scroll View не показывает изображение
- 0 Установка значения поля h: inputtext с использованием скрипта jquery
- 1 Как установить значение месяца на основе количества
- 1 Libgdx BitmapFont плохая частота кадров
- 0 Разбор XML-кода через PHP в jQuery — Ошибка XML
- 1 Как напечатать отчет Джаспер без предварительного просмотра в Java
- 1 Как сделать AppBarLayout плавающим над контентом, как в недавнем дизайне Google
- 1 Как перебрать детей Firebase и добавить их ключи в список?
- 0 Windows-сокеты accept () возвращают неверное значение
- 1 Python: выберите строки для самой последней записи от нескольких пользователей
- 0 Как закрыть всплывающее окно при нажатии в любом месте на сайте
- 1 Не удается найти элемент с помощью селектора CSS с Selenium на Python
- 1 Как я могу контролировать android.util.log или переопределить его?
- 0 Как выбрать диапазон элементов по идентификатору Javascript
- 1 Не удалось загрузить ресурс при загрузке изображения
- 0 phpmailer занимает 5 секунд .. пока php mail () занимает меньше 1
- 0 невозможно отправить изображение base 64 на сервер с угловым js
- 1 Преобразование даты в Java-приложении
- 0 Установите опцию по умолчанию в меню выбора, не сохраняя ее в модели
- 0 Как изменить значение метки после нажатия на HREF с JavaScript?
- 0 jQuery 1.6.2, jquery 1.10.2 и IE 8.0 — JQuery нулевой или не является объектом
- 1 Правильное использование IEnumerable
- 1 Проблема с D3.JS и Flask — попытка получить карту США
- 0 Математические случайные числа от 50 до 80
- 0 Передать пользовательскую переменную в анонимную функцию щелчка jQuery
- 0 Как мне создать регулярное выражение, которое добавляет все мои селекторы стиля с идентификатором
- 0 Упростите проверку php массива из формы ввода
- 1 Как удалить все неиспользуемые переменные в WebStorm?
- 0 Генерация PDF от AngularJS
- 1 Нажмите для удаленного хранилища
Источник: overcoder.net
Управление размером окна консоли C#
При разработке консольных приложений может потребоваться определить размер текущего окна или изменить размеры для конкретной цели. Обе эти задачи становятся возможными с помощью класса Console.
Класс Console
При написании приложения командной строки, которое выполняется в окне консоли, может потребоваться определить размер окна перед выводом текста. Например, вы можете показать ход выполнения программы с помощью пользовательского индикатора выполнения и хотите, чтобы этот индикатор использовал правильное количество символов для заполнения ширины окна. В других ситуациях вы можете установить высоту и ширину окна консоли, чтобы оно соответствовало дизайну вашего приложения.
Определение размера окна консоли возможно с помощью двух свойств класса Console. Они WindowWidth и WindowHeight. Оба являются статическими элементами, которые возвращают соответствующее измерение окна в символах. Если вы измените значения свойств, то окно консоли соответственно изменит свой размер.
Чтобы продемонстрировать это, добавьте следующий основной метод в новое консольное приложение и запустите программу. Этот код повторяется до тех пор, пока вы не нажмете клавишу Enter. Во время каждой итерации цикла считываются свойства windowHeight и windowWidth и отображается текущий размер окна. При нажатии одной из клавиш со стрелками окно расширяется или сжимается в зависимости от используемой клавиши.
namespace ConsoleResize < class Program < public static void Main(string[] args) < Console.CursorVisible = false; Console.ForegroundColor = ConsoleColor.Green; ConsoleKeyInfo keyInfo; Console.Title = «UpRead.Ru»; do < Console.CursorLeft = 0; Console.CursorTop = 1; Console.Write(«(x) «, Console.WindowWidth, Console.WindowHeight); keyInfo = Console.ReadKey(); switch (keyInfo.Key) < case ConsoleKey.LeftArrow: Console.WindowWidth = Math.Max(Console.WindowWidth — 1, 6); break; case ConsoleKey.RightArrow: Console.WindowWidth = Math.Min(Console.WindowWidth + 1, 100); break; case ConsoleKey.UpArrow: Console.WindowHeight = Math.Max(Console.WindowHeight — 1, 2); break; case ConsoleKey.DownArrow: Console.WindowHeight = Math.Min(Console.WindowHeight + 1, 60); break; >> while (keyInfo.Key != ConsoleKey.Enter); > > >
Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
заметки, си шарп, консоль
Источник: upread.ru
Nagits’s Blog
C# Console resizing (изменяем размер консольного окошка)
Наверное, не новость для тех, кто с этим сталкивался, что из программы изменить размер консольного окна просто как 2х2 не получится.
Какое же разочарование, когда нельзя написать «Console.Height = 600». Да и Console.SetWindowSize не больно-то помогает. :-), да-а, совсем на С# горе-программисты разленились. Сегодня вот и я столкнулся с этой проблемкой. А сейчас как раз и расскажу, как она решается.
Возможно, вы обратили свое внимание на функцию Console.SetWindowSize. И вероятно, она вывалилась в ArgumentOutOfRangeException. Давайте глянем, что нам пишет об этом MSDN:
Сумма width и WindowLeft либо сумма height и WindowTop больше или равна Int16.MaxValue.
Третья причина обычно и создает проблему.
Для решения приходится воспользоваться WinAPI, о котором совсем уже все позабыли, как тока перешли на C#.
Нужная нам функция
bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
находится в user32.dll, которую надо импортировать в наше консольное приложение. Делается это просто:
[System.Runtime.InteropServices.DllImport(«user32.dll»)] bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
Первый параметр hWnd (дескриптор вашего окошка) добываете с помощью
IntPtr ConsoleHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
Второй параметр отвечает за положение вашего окна по оси z (нормальное состояние или выше всех, например)
В качестве этого параметра можно указать одно из трех
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); static readonly IntPtr HWND_NOTOPMOST = new IntPtr(-2); static readonly IntPtr HWND_TOP = new IntPtr(0);
Так, идем дальше.. задаем новое положение окна переменными X,Y и размеры с помощью переменных cx, cy.
Последним параметром мы задаем флаги для окна, я их приведу, но описывать не буду, посмотрите на msdn.
const UInt32 SWP_NOSIZE = 0x0001; const UInt32 SWP_NOMOVE = 0x0002; const UInt32 SWP_NOZORDER = 0x0004; const UInt32 SWP_NOREDRAW = 0x0008; const UInt32 SWP_NOACTIVATE = 0x0010; const UInt32 SWP_FRAMECHANGED = 0x0020; const UInt32 SWP_SHOWWINDOW = 0x0040; const UInt32 SWP_HIDEWINDOW = 0x0080; const UInt32 SWP_NOCOPYBITS = 0x0100; const UInt32 SWP_NOOWNERZORDER = 0x0200; const UInt32 SWP_NOSENDCHANGING = 0x0400;
Задать их можете например, так
const UInt32 WINDOW_FLAGS = SWP_NOZORDER | SWP_NOSIZE;
Приведу рабочий код:
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); static readonly IntPtr HWND_NOTOPMOST = new IntPtr(-2); static readonly IntPtr HWND_TOP = new IntPtr(0); const UInt32 SWP_NOSIZE = 0x0001; const UInt32 SWP_NOMOVE = 0x0002; const UInt32 SWP_NOZORDER = 0x0004; const UInt32 SWP_NOREDRAW = 0x0008; const UInt32 SWP_NOACTIVATE = 0x0010; const UInt32 SWP_FRAMECHANGED = 0x0020; const UInt32 SWP_SHOWWINDOW = 0x0040; const UInt32 SWP_HIDEWINDOW = 0x0080; const UInt32 SWP_NOCOPYBITS = 0x0100; const UInt32 SWP_NOOWNERZORDER = 0x0200; const UInt32 SWP_NOSENDCHANGING = 0x0400; [System.Runtime.InteropServices.DllImport(«user32.dll»)] static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); [STAThread] static void Main(string[] args)
Ну и, вдогонку, если вдруг кому пригодится, для минимизации или максимизации окна импортируете функцию из той-же user32.dll:
[System.Runtime.InteropServices.DllImport(«user32.dll»)] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); private const int SW_MINIMIZE = 6; private const int SW_MAXIMIZE = 3;
Следующий код развернет консольное окошко на половину экрана (больше для консоли — нельзя):
ShowWindow(ConsoleHandle, SW_MAXIMIZE);
Источник: nagits.wordpress.com