簡體   English   中英

如何為表單設置“首選大小”?

[英]How do I set a “preferred size” for a form?

我在表單上有一些控件,我將它們固定在表單的左側和右側,以確保它們隨表單增長和縮小。 我的表單也設置為自動增長和縮小,以適應可能獲得長字符串的一些標簽。 當這些標簽移除長字符串時,我希望我的表單恢復到之前的寬度。 在我的表格上左右固定的所述控件似乎阻止了這種情況。 我可以按照我的意圖使它工作嗎?

這是一種不需要你編寫任何特定尺寸代碼的方法......但它假設你的所有按鈕都在底部。

步驟1.設置對話框的最小大小。

步驟2.在表單上創建一個面板。

步驟3.將按鈕移動到面板中。

步驟4.將面板停靠在表單底部。

步驟5.確保AutoSizeMode對話框設置為ShrinkAndGrow

您可以使用此技術將面板停靠到左,右,頂部和底部邊框中的任何一個。 並使對話框適當調整大小。

我可以建議你要這樣做嗎? 我知道你正試圖為你的用戶提供幫助,但是隨機縮小窗口(對用戶來說可能是隨機的)會讓人感到困惑,也許會令人沮喪。 使用新的Windows 7 UI功能Aero Snap可能更是如此,即您將窗口停靠在左側,然后調整大小。

考慮用戶偏好的窗口大小。 用戶已經告訴過你他們想要的東西有多大,尊重它!

編輯:我還應該補充一點,如果你沿着這條路走下去就有一個bug。 考慮到1000像素寬的形式,用戶將其拖動到(-500,100)以在顯示器上顯示一半。 如果他們點擊了一個可見的按鈕(或者更糟糕的是,某些事情發生在背景中!)並且表單大小調整到450像素,那么窗口就會消失! 用戶在任務欄中看到它,但除非他們知道一些花哨的alt +空格快捷方式,否則無法訪問它。

一個建議是掛鈎OnPaint事件。 您的控件是由此點構建的,並且將在表單上設置其初始位置值。 將您想要的所有內容捕獲到表單級別的私有對象集中。

在OnStringsRemoved事件期間,從對象中讀取並按原樣設置所有內容。 修改錨定的控件應該觸發表單調整大小,但可能是您必須手動設置所有內容。 也許修改表單會縮小控件而不是相反。

另一種建議是硬編碼您的初始值並每次都返回它們。 我個人會選擇OnPaint。 它可以幫助您處理大字體增加控件大小或框架在用戶看到之前執行的任何操作。

使用System.Drawing.Graphics.MeasureString

    public SizeF MeasureString(string text, Font font, int width);

文本= yourtext; 字體= fontofthelabel; 寬度= maxwidthoflabel;

MSDN中的MeasureString

你可以谷歌更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM