0

重複の可能性:
コンパクト フレームワークのウォーターマーク付きテキスト ボックス

Visual Studio 2008 SP1、最新のコンパクト フレームワーク、および Windows Mobile 5 を使用します。

TextBox に文字列を配置するには、DrawString を使用する必要があります。しかし、文字列を描画するとすぐに、TextBox コントロールがそれを上書きします。(私はコントロールの端から少し離れて描いたので、テキストが半分表示され (コントロールの外にある場所)、半分なくなっている (コントロールの上にある場所) ため、私は知っています。)

テキストをそこに保持できるように、TextBox を更新しないようにする方法はありますか?

注: TextBox のサブクラス化を検討し、テキストを描画するだけです。ただし、TextBox クラスの Paint イベントは、CompactFramework ではキャッチできません。Paint イベントなしで TextBox にペイントできる方法を知っている場合は、TextBox クラスをサブクラス化したいと思います。

--質問終わり--

なぜこれを行う必要があるのか​​ 疑問に思っている場合に備えて、ここに私が取り組んでいることを示します。数値を2回入力する必要があるテキストボックスが必要です。番号をもう一度入力する必要があるという明確な手がかりが必要です。ユーザーに再入力するように伝えるテキスト ボックスの上に、わずかにグレー表示されたテキストを表示したいと考えています。

ラベル、ハイパーリンク ラベル、および別のテキスト ボックスを使用してみましたが、下のテキストが見えにくくなります (デフォルト値が部分的に表示される必要があります)。

誰かが再入場の別の手がかりを知っていれば、それも素晴らしいでしょう!

バカノ

4

2 に答える 2

1

この問題は別の方法で解決できます。以前の入力をシルエットにしたいので、もう一度入力する必要があるようです。

CF が最近どのような進歩を遂げたかはわかりませんが、RichTextBox があれば、このメソッドは機能します。そうでない場合は、ベース コントロールから始まる独自の実装を作成する必要があります。

  1. RichTextBox のテキストをシルエット値に設定しますが、すべての文字のテキストの色を灰色にします。
  2. キー押下イベントをキャプチャし、正しいキーが押されたら、押された文字のテキストの色を灰色から黒に変更し、そのキー押下を破棄し、他のすべてのキー押下を破棄します。

自由形式のテキストなど、予約から外れるのを許可したい場合、このソリューションは機能しません。タイプミスしたり別の文字を入力したりした場合に入力したものを破棄する代わりに、キープレスを破棄せず、現在および残りの灰色の文字を空白にして、シルエットなしで入力できるようにします。

于 2008-10-30T22:05:10.273 に答える
1

私がこれのクローズドデュープで答えたように:

どこで DrawText を実行していますか? TextBox の親で?もしそうなら、それは期待される動作です。(OnPaint をオーバーライドして) 最初に値をペイントするカスタム TextBox コントロールを作成しない理由はありません。

于 2008-10-30T23:20:21.197 に答える