2008-10-30 31 views
0

可能重複:
Watermarked Textbox for Compact Framework的DrawString在一個TextBox

使用Visual Studio 2008 SP1,最新的緊湊型框架和Windows Mobile 5

我需要使用到的DrawString將一個字符串放在TextBox上。但是一旦我繪製字符串,TextBox控件就會寫入它。 (我知道,因爲我從控制的邊緣略微畫了一些,我的文字是一半可見的(其中有一個是控制的),一半沒有了(它在控制的位置)

有沒有反正我可以得到文本框不刷新,所以我可以讓我的文字有

注:我已經調查子類文本框,只是有它畫我的文字然而,對於TextBox類油漆事件不是在CompactFramework開捕如果你知道。一種能夠在沒有Paint事件的情況下在TextBox上繪製的方式,然後我希望子類化TextBox類。

- 問題結束 -

爲防萬一你想知道爲什麼我需要這樣做,下面是我正在處理的內容:我需要一個文本框,其中必須輸入兩次數字值。我需要一些清楚的線索,他們必須再次輸入號碼。我希望在文本框上顯示一些灰色的文字,告訴用戶重新輸入。

我試過使用標籤,超鏈接標籤和另一個文本框,但它們掩蓋了下面的文本(其中有一個默認值必須部分可見)。

如果有人知道一個不同的方式提示再入境,這將是偉大的!

Vacano

+0

您可以編輯您的原始問題。但是,如果您必須重新提問,請先刪除前一個,並且不要參考它來污染您的標題。 – Shog9 2008-10-30 21:54:51

回答

1

可以以不同的方式解決這個問題。這聽起來像你想剪影他們以前的輸入,所以他們必須再次輸入。

我不知道最近CF做了什麼,但是如果有一個RichTextBox,那麼這個方法就可以工作。如果不是,你將不得不從基礎控件開始編寫自己的實現。

  1. 將RichTextBox的文本設置爲輪廓值,但使所有字符的文本顏色變爲灰色。
  2. 捕獲按鍵事件,當他們按下正確的鍵時,將該字符的文本顏色從灰色變爲黑色,並丟棄該按鍵,並放棄所有其他按鍵。

如果您希望允許他們退出預訂(如自由格式文本),此解決方案將不起作用。如果他們輸入錯誤或輸入不同的字符,而不是丟棄他們輸入的內容,則不會丟棄按鍵,但可以清空當前和剩餘的灰色字符,從而允許他們鍵入不帶輪廓的字符。

你在哪裏做的DrawText:

1

正如我在這個封閉的欺騙回答?在TextBox父級?如果是這樣,那麼這將是預期的行爲。爲什麼不創建自定義的TextBox控件,第一次繪製(通過重寫OnPaint)該值,可能是淺灰色,然後第二次用黑色繪製它?