2012-03-12 16 views
0

私は、TextBoxコントロールを模倣するが、コントロールではなく、カスタムの描画されたコンポーネントまたは要素であるクラスを必要としています。カスタムテキストボックスコンポーネント/コントロール(コントロールではない)

ホイールを作り直すような気分になるのは、私がどこからでも見ることができるからです。たとえば、最新のウェブブラウザでは、テキストボックスはコントロールではありません。ほとんどのWinformsコントロール、特にToolStripTextBoxなどのToolStripコントロールには、テキストボックスのように動作する要素(コントロールではありません)があります。

マイクロソフトでは、コントロールを作成するたびにホイールを再作成しないと仮定します。しかし、おそらく彼らのコードは独占的で公開されていないでしょう。

オープンソースのソリューションを知っている人はいますか?私はGDI +の描画に慣れていますが、キャレットの配置、選択、テキストの挿入を検討すると、テキストフィールドは簡単な作業ではありません。

コードを自分で書く方法については、特定のポイントで文字を計算する方法など、参考になるでしょう。可能性のある文字の幅を測定するためのルックアップテーブルを作成する必要がありますか?または、MeasureStringをループして、書式設定スペースを考慮しますか?

答えて

0

なぜコントロールでなければならないのですか? Windowsフォームを使用している場合は、実際にコントロールを必要とする可能性がはるかに高いです。

このタイプの質問が出てくる一般的なケースは、グリッド編集です。コントロールされていないTextBoxの代わりに、通常、グリッドはユーザーがそのグリッドにフォーカスするまで、グリッドに単純なテキストを表示します。その時点で、一時的な実際のテキストボックスが編集用に挿入されます。そのセルを離れるとTextBoxが消え、おそらく変更されたテキストがグリッドに表示されるようになりました。

あなたの状況は似ていると思います。そうでない場合は、目標を説明してください。

+0

私の目標は、カスタム描画されたドキュメントキャンバスにテキストフィールドを作成することです。私は、GDI +を使って描画され、スクロール、ズーム、およびレイヤーをサポートするさまざまなタイプのドキュメントを持っています。私は、アンチエイリアスフォントを使用する柔軟性を求めています。透明な背景を持つことや、ソリッドカラーの代わりにグラデーションブラシを使用するという観点から、ルックをもっとコントロールしたいと思っています。浮動小数点スケールファクタを使用してTextBoxコントロールをどの程度正確にスケールするのですか? –

+0

代わりにWPFを使用できますか?あなたはあなたが持っているものを置き換えるのではなく、アプリケーション全体の小さな部分として含めることができます。 –

+0

残念ながら、これをWinformsプロジェクトと統合する必要があります。 –

関連する問題