Это продолжение моего предыдущего вопроса " Позиционирование в зависимости от шрифта. " Это попытка решить проблему real , стоящую за этим вопросом, возможно, способами, отличными от Я спрашивал о.
Пример постановки задачи: Я хочу установить флажок «Скорректировать цены на после загрузки», где - это число, которое можно задать с помощью NumericUpDown
---, а - это либо «процент», либо «доллары», при этом выбор ComboBox
. Это будет в одной строке.
Сложность: Я хочу иметь возможность изменить свои шрифты для всех этих элементов управления (в основном, установив их на System.Drawing.Fonts.MessageBoxFont
, то есть Tahoma 8 pt в Windows XP / etc. И Segoe UI 9 pt на Vista), не испортив мой макет, который с моей текущей Position
-свойством - настройка парадигмы не работает.
В целом, я бы хотел, чтобы элементы управления динамически располагались независимо от шрифта, чтобы NumericUpDown
плотно вписывался в пространство между "by" и ComboBox
, и аналогично ComboBox
вписывается в отношении CheckBox
и строки " после загрузки "вправо.
Часть, которую все, кажется, упускают: Это все вложено в CheckBox
. Поэтому, в идеале, нажатие на слова «после загрузки» должно поставить / снять флажок и нарисовать небольшой прямоугольник вокруг «Корректировать цены после загрузки». Так что простое добавление дополнительного Label
в конец не сработает, потому что тогда оно не переключит CheckBox
; Точно так же попытка обвязать вещи, подключив такое событие Label
Click
, не даст желаемого прямоугольника выделения.
Решения? На данный момент я думаю:
Переосмыслите проблему, каким-то образом, возможно, с помощью уродливого решения, такого как две отдельные строки текста: «Корректировка найденных цен после загрузки» (CheckBox
), «Сумма корректировки:» (NumericUpDown
и ComboBox
). Это действительно плохо, потому что мой блок опций абсолютно полон опций этого типа (то есть типа в примере), поэтому он по крайней мере удвоится по вертикали.
Какой-то пользовательский элемент управления? SplittableCheckBox
Какая-то магия с TableLayout
контролем? (Уверен, что это терпит неудачу в той части, которую все, похоже, упускают.)
Сдавайтесь и возвращайтесь к MS Sans Serif, либо используйте Tahoma равномерно, либо упаковывайте пользовательский интерфейс Segoe вместе с моим приложением, не уважая системные шрифты по умолчанию.
(Новое, через редактирование) Переключитесь на WPF, если кто-то сможет убедить меня, что он точно поддерживает этот сценарий.