2012-04-18 29 views
2

對於WinForms .Net 2.0項目,我需要一個複選框來支持多行,以使框本身將對齊左上角。
這是通過使用CheckAlign = System.Drawing.ContentAlignment.TopLeft完成的,這與默認值(MiddleLeft)不同。帶有大字體的多行CheckBox上的左上方框對齊

使用默認字體時,這看起來不錯,但是當字體變大時 - 會發生什麼情況是文本上方的間隙增加了,但框本身上方的間隙仍保持不變。
結果是框出現在文本上方(請參見下圖)。

任何想法?

我想需要注意的是:

  1. 我已經嘗試了一些選項,比如使用自定義設計,一個TableLayoutPanel等,但並沒有走遠。
  2. .Net 2.0被迫 - 升級不是一個選項。

在此先感謝。

CheckBox Issues

+3

我不認爲你有很多選擇這裏。也許一個沒有文字的複選框旁邊的文字標籤。 – LarsTech 2012-04-18 17:02:14

+0

謝謝,但如前所述我已經嘗試過(在TableLayoutPanel中)。最終的結果是一樣的 - 盒子上方的間隙保持不變,而文字上方的間隙隨着字體大小增加而增加... – AVIDeveloper 2012-04-18 20:34:49

回答

2

複選框實際上是對齊文本。但是,這隻能讓印刷人員滿意。只是一個大字體有更高的上升高度,這是變音符號所在的位置。嘗試「這是問題」。這不是你可以修補的東西。 CheckedListBox也不支持所有者繪製,它通常是一個相當有缺陷的控件。如果你不想使用ownerdraw ListBox,那麼MiddleLeft或更小的字體是唯一不錯的選擇。

enter image description here

+0

感謝您的大開眼界!只是一個小小的更正 - 我不是在尋找CheckedListBox,我正在尋找一個CheckBox替代品。有沒有辦法來計算上升的高度? (沒有它 - 我不明白自繪解決方案如何可以幫助) – AVIDeveloper 2012-04-18 20:42:37

+0

我有一個想法:一個FontChanged事件,我blit'W'到位圖,然後掃描它頂部 - >底部計數空白) 像素。第一個非空像素應該是上升的高度。 – AVIDeveloper 2012-04-18 21:04:03

+1

啊,我想知道你是如何獲得截圖的。但是,與CheckBox完全相同的問題。像素掃描的hackorama是好的,只要你爲整行文本做。我個人會明確清楚複選框的開始和結束位置,以便中心複選框看起來完全自然。易於使用Paint事件。 – 2012-04-18 21:09:10