2009-08-27 10 views
4

私は、テキストボックス/ラベルコントロールのカスタム代替品を作成しています。それは同様の機能を提供する必要がありますが、私のアプリケーションのコンテキストでは最適化され、(うまくいけば)はるかに速くなります。複数行のテキスト選択をサポートできる必要があります。選択したテキストを簡単に描画する方法があるのだろうかと思います。今は、選択矩形をどこに描画するかを計算して手動で描画する方法があるように見えます。私は、この方法または他の方法を達成する最も簡単な方法についての推奨を得ることを望んでいました。ありがとう。選択したテキストを描画する方法

+2

この目的のために作成するカスタムUserControlは、ビルトインコントロールよりも高速になることはありません。実際にテキストボックスとラベルでパフォーマンスの問題が発生している場合は、フォーム上で多すぎる可能性があります。 – MusiGenesis

+0

私は方法がないとは言いませんが、実現するのが非常に難しいように思えます。なぜなら、その存在を基にした企業は、改善。 –

答えて

2

System.Windows.Forms.TextRendererを使用してください。 System.Windows.Forms.Controlから

だけオーバーライドする方法:カスタム動作実装が必要な場合はもちろん

protected override void OnPaint(PaintEventArgs e) 
{ 
    TextRenderer.DrawText(e.Graphics, Text, Font, new Rectangle(0, 0, Width, Height), ForeColor); 
} 

public override Size GetPreferredSize(Size proposedSize) 
{ 
    return TextRenderer.MeasureText(Text, Font); 
} 

は、あなたは、このようなOnFontChangedOnSizeChangedとしてカップルより多くのイベントを処理する必要があります。

あなたが探しているものが、それらのコントロール内の特定のテキスト(選択されたテキスト)をターゲットにしている場合は、articleをご覧ください。スペルチェックライブラリ(SharpSpell)のソースコードもこの記事からリンクされています。

0

アプリケーションの基本コントロールを書き換えることは重要な作業であり、絶対最後の手段(IMO)がない限り行わないでください。含まれているコントロールがあなたの例外を満たしていない場合は、これらのコントロールの設計とサポートを中心にビジネスが構築されているサードパーティのコントロールライブラリを購入することをお勧めします。私は多くの成功を収めてきました。Telerik's ASP.NETコントロール私は他のコントロールラインについて多くの肯定的な発言を見てきました。

他にも、サードパーティコントロールのソースがあります。

関連する問題