2012-03-12 38 views
0

我需要一個模仿TextBox控件但不是Control的類,而是一個自定義繪製的組件或元素。自定義文本框組件/元素(不是控件)

創建人感覺像重新發明輪子,因爲我看到他們到處都是。例如,在任何現代Web瀏覽器中,文本框都不是控件。大多數Winforms控件,尤其是ToolStrip控件(如ToolStripTextBox)都具有類似文本框(但不是控件)的元素。

我假定微軟並沒有爲他們製作的每個控件重新發明輪子。但他們的代碼很可能是專有的,而非公開的。

有沒有人知道這個開源解決方案?我有GDI +繪圖的經驗,但是當您考慮插入符號的位置,選擇和插入文本時,文本字段不是一項簡單的任務。

任何有關如何自己編寫代碼的指針都會被讚賞,比如如何計算給定點上的字符。我應該爲每個可能的字符的測量寬度創建一個查找表嗎?或者通過MeasureString循環來考慮格式化空間?

回答

0

爲什麼它不是控件?如果您使用的是Windows Forms,那麼您確實需要一個控件的可能性更大。

這種類型的問題出現的常見情況是網格編輯。通常情況下,網格顯示網格中的簡單文本,直到用戶關注該網格爲止,而不是非控制文本框。此時會插入一個臨時的真實TextBox進行編輯。離開該單元格將拋出TextBox,並且可能更改的文本現在由Grid顯示。

我假設你的情況是類似的。如果沒有,請解釋你的目標。

+0

我的目標是在自定義繪製文檔畫布中創建文本字段。我使用GDI +繪製不同類型的文檔,並支持滾動,縮放和圖層。我想要使​​用抗鋸齒字體的靈活性,並且我希望能夠通過具有透明背景或使用漸變畫筆而不是純色來更好地控制外觀。我如何使用浮點比例因子縮放TextBox控件? – 2012-03-12 17:18:36

+0

是否可以使用WPF?您可以將其作爲整體應用程序的一小部分而不是替換您的所有應用程序。 – 2012-03-12 17:31:16

+0

不,不幸的是我必須將它與Winforms項目集成。 – 2012-03-12 17:33:01