Вот ссылка на небольшой пример VB.Net 2008:
http://www.4shared.com/file/255391716/26c45c1e/UserControlTest.html
И, образец С#:
http://www.4shared.com/file/255392906/27f4efbb/UserControlTestCHash.html
Извините, но это бесплатный хостер, поэтому вам нужно подождать 10 секунд.
Сначала выполните шаги для репликации, затем я объясню, в чем проблема:
(1) Создайте System.Windows.Forms.UserControl и добавьте кнопку в нижний правый угол. Оставьте кнопку якоря по умолчанию (вверху слева). Добавьте еще несколько кнопок, расположенных вокруг, чтобы вы могли видеть, что они масштабируются правильно.
(2) Добавьте UserControl в форму в конструкторе после вызова InitializeComponent.
(3) Запустите форму.
(4) Увеличьте размер шрифта формы каким-либо образом (например, нажмите кнопку формы).
Все элементы управления в шкале usercontrol отлично, но сам пользовательский контроль не работает. Его ширина и высота слишком сильно увеличиваются. Посмотрите на границу между кнопкой в нижнем правом углу и пользовательским контролем.
Чтобы устранить проблему, пользовательский элемент управления должен быть добавлен до вызова InitializeComponent.
Если мне не удалось добавить usercontrol перед InitializeComponent, есть ли способ для исправления масштабирования?
Изменить: Я удалил свой предыдущий ответ (который в основном сказал "отлично работает на моей машине" ) и заменил его следующим.
В пользовательском UserControl
установите AutoScaleMode = Inherit
. Это должно исправить чрезмерное масштабирование пользовательского элемента управления.
Нет воспроизведения, он отлично масштабируется. Он не будет масштабироваться должным образом, если вы установили свойство Font в UserControl и не соответствовали размеру шрифта формы.
Свойство Font является "эмбиентным" свойством, таким как ForeColor и BackColor. Пока вы оставляете его по умолчанию (не жирным шрифтом в окне "Свойства" ), он будет использовать шрифт родителя. Когда каждый элемент управления использует тот же размер шрифта, он будет масштабироваться пропорционально.
Чтобы исправить, выберите текст свойства Font в окне "Свойства", нажмите "Backspace", чтобы стереть его, и нажмите "Enter". Он сбрасывается до значения по умолчанию.
Исправьте свой код следующим образом:
this.SuspendLayout();
UserControl1 uc = new UserControl1();
this.Controls.Add(uc);
this.ResumeLayout(false);
UserControls
они «унаследуют» мои настройки родительского шрифта? Я не должен делать или устанавливать что-то еще? AutoScale = Font
или что-то?