3

OnPaint をオーバーライドしてコントロールに正方形を描画する場合、デザイナーでプレビューしているときに e.graphics.draw... が表示されるようにするにはどうすればよいですか?

4

2 に答える 2

6

http://msdn.microsoft.com/en-us/magazine/cc164048.aspx

http://msdn.microsoft.com/en-us/magazine/cc164145.aspx

Control.OnPaint に手動で登録してデザイン時の UI を追加することもできますが、OnPaintAdornments のオーバーライドは、コントロールのデザイン時/実行時の UI が描画された後にのみ呼び出されるため、より良いオプションであることがわかります。ケーキのアイシング (図 20 を参照)。DesignerAttribute を ClockControl クラスに追加するだけで、関連付けが完了します。 コードをコピー

[ Designer(typeof(ClockControlDesigner)) ] class ClockControl : コントロール { ... }

于 2009-04-10T19:56:33.033 に答える
1

コントロールのフォーカス四角形を描画しようとしていて、コントロールがフォームに追加された後にコントロールを操作するときに表示されるようにする場合は、Gaijin42 のアプローチが機能するはずです。

カスタム描画コントロールがどのように見えるかを確認しようとしている場合...

  • コントロール内のメソッドをオーバーライドした場合、フォーム (または別のコントロール) に追加された後にコントロールを見るとOnPaint、その結果が表示されます。OnPaint

  • Paintコントロール自体のデザイナーを見たときに結果を見ようとしている場合、それは可能ではないと思います(少なくとも VS2005 ではそうではありませんでした):

    残念ながら、これは不可能です。ユーザー コントロールの動作を記述している間、コードはコンパイルされず、デザイナーは実際には通常のユーザー コントロールを使用して子コントロールをホストします。OnPaint オーバーライドなどは実行されません。

    コントロールのオーバーライドをデバッグするには、ある種のホストで実行する必要があります。VS2005 はこの目的のために新しいコントロール ホストを提供しますが、これでも十分でない場合があります。

于 2009-04-10T19:57:44.247 に答える