2013-11-26 3 views
0

У меня есть эта проблема, которую я не могу решить: у меня есть FlowLayoutPanel с шириной 240; Я создал настраиваемый элемент управления с одинаковой шириной, и я добавляю его программно к своей панели. Я ожидаю, что он идеально подойдет, но это не так. Элементы управления, которые я добавляю, выглядят намного больше, чем панель.Странное поведение, добавляющее элементы управления к FlowLayoutPanel

Самое смешное, что я проверил ширину как панели и элементов управления во время отладки, и они все еще 240 ...

Любая идея? Заранее спасибо!

+0

Значения отступов/полей элементов управления имеют значение? Попробуйте обнулить их. –

ответ

1

Пользователь UserControl, как и форма, помнит, откуда он. Диагностика здесь заключается в том, что она была спроектирована на машине с настройками точек видеодокументов на дюйм с более высоким значением, чем машина, на которой вы пытаетесь ее использовать. Таким образом, Winforms компенсирует разницу и перемасштабирует элемент управления в соответствии с его первоначальным размерным размером в дюймах. Таким образом, свойство размера элемента управления в пикселей увеличивается по коэффициенту DPI.

Вы можете диагностировать это, посмотрев файл Designer.cs для UserControl. Прокрутите к нижней части методы InitializeComponent(), пока вы видите:

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 

В AutoScaleDimensions значение свойства делает это запоминание. Значения, показанные на рисунке, относятся к машине, работающей с разрешением 96 DPI. Сравните его с тем же присвоением свойств в файле Designer.cs формы, что ожидается несоответствие.

Простое редактирование значения в файле Designer.cs пользовательского элемента управления, чтобы он соответствовал значению формы, является обходным путем. Тем не менее, вам нужно проверить, что изображения все еще правильно совпадают с другими элементами управления и что шрифты по-прежнему соответствуют элементам управления. Они не будут, если вы не сохранили настройку по умолчанию, чтобы они наследовали от родителя. Легко видеть, что происходит не так. В общем, избегайте неприятностей, сохраняя машины, которые вы используете в одной и той же обстановке.

+0

Отличное объяснение, спасибо большое. Я развиваюсь с двумя машинами, и решение, которое вы мне сказали, делало трюк. – user449689

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