2013-03-21 3 views
2

VS 2010, похоже, обновляет файл designer.cs моей формы, когда я открываю форму в представлении дизайнера.VS 2010 обновляет Designer.cs, когда никаких изменений не производится

Например, скажем, у меня есть форма с меткой типа System.Windows.Forms.Label и я создал ярлык таким образом, что файл дизайнер (автогенерируемый код)

this.myLabel.AutoSize = true; 
this.myLabel.Font = new System.Drawing.Font("Tahoma", 8.25F, 
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 
this.myLabel.Location = new System.Drawing.Point(**25, 63**); 
this.myLabel.Name = "myLabel"; 
this.myLabel.Size = new System.Drawing.Size(**101, 13**); 
this.myLabel.TabIndex = 1; 
this.myLabel.Text = "A simple windows label."; 

, когда я недалеко от точки зрения дизайнера и открыть его снова, VS 2010 будет иногда изменить его

this.myLabel.AutoSize = true; 
this.myLabel.Font = new System.Drawing.Font("Tahoma", 8.25F, 
System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 
this.myLabel.Location = new System.Drawing.Point(**29, 78**); 
this.myLabel.Name = "myLabel"; 
this.myLabel.Size = new System.Drawing.Size(**124, 17**); 
this.myLabel.TabIndex = 1; 
this.myLabel.Text = "A simple windows label."; 

, когда я что-нибудь другое, чем открыть файл не сделано.

Кто-нибудь знает, почему это происходит? Кто-нибудь еще испытал что-то подобное?

+1

Не редактируйте созданные разработчиком файлы. Когда-либо. Используйте частичный класс и поместите в него соответствующий код. Теперь возникает вопрос: меняется ли форма * на самом деле *, т. Е. Изменять элементы управления неожиданно - при настройке * no * формы? Если это так, это другая проблема («изменение формы управления на своем собственном»), которая напрямую не связана с генерацией файла кода. – 2013-03-21 20:31:43

+0

Я не редактирую сгенерированные файлы. Я также не заметил, что форма _actually_ меняется (но изменения небольшие, поэтому я просто не могу сказать), но я использую управление версиями с командой разработчиков, и этот файл помечается как «обновленный», когда я «На самом деле ничего не изменилось, и мой обозреватель кода увидит изменения и задается вопросом:« Почему вы перемещали элементы формы? » – Miaka

+0

Этикетка имеет авто-размер. Возможно, изменение размера шрифта или DPI влияет на то, как дизайнер вычисляет макет, чтобы его сохранить? Я бы не стал беспокоиться об этом (если только макет * не был осуществлен, что необходимо проверить в любом случае) .. возможно, просто следите за этими изменениями до их нажатия. – 2013-03-21 21:54:59

ответ

5

Характеристика, а не ошибка. Форма изначально была спроектирована на машине с настройкой точек видеоадаптера на дюйм на 96. У вашей машины есть другой DPI, 120. Очень легко изменить в современных версиях Windows, вы выбрали настройку 125% (средний) в панели управления + дисплей.

Различные настройки dpi влияют на размер шрифтов, которые вы используете. В вашем фрагменте кода есть один вид, это 8,25 балла. Один пункт - 1/72 дюйма. Так что текст изначально был 8.25 * 1/72 = 0.114583 дюйма. С разрешением dpi на 96, это 0.114583 x 96 = 11 пикселей. Обратите внимание, что это также объясняет, почему вы получили дополнительные 0.25, добавленные к размеру точки, и сделали хороший круглый номер.

Но теперь ваши dpi равны 120, текст будет 8,25 x 1/72 x 120 = 14 пикселей. Текст стал больше, ваш контроль тоже должен стать больше, или он будет обрезать текст, срезая спускатели.

Это было сделано автоматически при загрузке формы. Существенными свойствами являются AutoScaleMode, по умолчанию установлен шрифт. И AutoScaleDimensions вы найдете его в верхней части метода InitializeComponent(). Это тот, который помнил, что такое первоначальная настройка DPI.

Это будет происходить и на машине вашего пользователя. Убедитесь, что форма автоматически масштабируется. У вас могут возникнуть проблемы, если у вас есть элементы управления с другим размером шрифта. И просто верните форму обратно в исходный элемент управления, чтобы повторное масштабирование не повторилось.

+0

Большое вам спасибо! Я проверил историю файла, и я третий человек, который «изменил» его. По вашему ответу, у первого парня и у меня такая же настройка DPI, но у второго парня есть средняя настройка. Я попрошу его проверить меня. – Miaka

+0

Я спросил у парня, и он подтвердил, что у него была средняя настройка DPI, когда он включил изменения. – Miaka