2013-11-26 74 views
0

我有這個問題,我不能解決:我有一個寬度爲240的FlowLayoutPanel;我創建了具有相同寬度的自定義控件,並以編程方式將其添加到我的面板。我期望它完全適合,但它不會。 我添加的控件看起來比面板大得多。將控件添加到FlowLayoutPanel的奇怪行爲

有趣的是,我已經檢查板和調試過程中同時控制的寬度和他們還是240 ......

任何想法?提前致謝!

+0

控件的填充/餘量值是否有所不同?嘗試調零它們。 –

回答

1

一個UserControl,就像一個Form,記得它來自哪裏。這裏的診斷是,它是在一臺機器上設計的,該機器的視頻適配器的每英寸點數設置的值比您嘗試使用它的機器的值高。所以Winforms補償差異並重新調整控制,以匹配其原始設計尺寸英寸。因此,像素中的控件的Size屬性按DPI比例變大。

您可以通過查看UserControl的Designer.cs文件來診斷此問題。對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