2013-03-21 22 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

不要編輯設計器生成的文件。永遠。使用部分類並在其中添加相關代碼。現在,問題是:表單*實際*變化 - 也就是說,控件是否意外調整大小 - 當*沒有*表單調整時?如果是這樣,這是一個不同的問題(「改變自己的控制佈局」),這與代碼文件的生成沒有直接關係。 – 2013-03-21 20:31:43

+0

我沒有編輯生成的文件。我也沒有注意到_actually_變化的形式(但變化很小,所以我可能只是無法說明),但是我正在使用一組開發人員進行版本控制,並且當我將該文件標記爲「已更新」時實際上並沒有改變任何東西,我的代碼審查人員會看到這些變化,並想知道「你爲什麼要移動表單元素?」 – Miaka 2013-03-21 21:37:53

+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英寸高。在96的dpi下,這是0.114583 x 96 = 11像素。請注意,這也解釋了爲什麼您將額外的0.25添加到了磅值中,這是一個很好的圓數。

但是,現在您的dpi是120,文本將是8.25 x 1/72 x 120 = 14像素。文字變得越來越大,你的控制也需要變得更大,否則它會剪斷文本,剪掉下層。

這是在您加載表單時自動完成的。基本屬性是AutoScaleMode,默認設置爲Font。和AutoScaleDimensions,你會發現它分配在InitializeComponent()方法的頂部。這是記住原始DPI設置的那個。

這也將發生在您的用戶機器上。確保窗體自動縮放正確。如果您的控件具有不同的字體大小,則可能會遇到一些麻煩。只需將表單返回到源代碼控制中,以便重新調整不會再發生。

+0

非常感謝!我檢查了文件的歷史,我是第三個「改變」它的人。通過你的回答,第一個人和我有相同的DPI設置,但第二個人有中等設置。我要請他爲我覈實。 – Miaka 2013-03-22 16:07:23

+0

我問那個傢伙,他證實他在轉身時確實有中等DPI設置。 – Miaka 2013-04-08 19:14:37