OnPaint をオーバーライドしてコントロールに正方形を描画する場合、デザイナーでプレビューしているときに e.graphics.draw... が表示されるようにするにはどうすればよいですか?
2 に答える
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 : コントロール { ... }
コントロールのフォーカス四角形を描画しようとしていて、コントロールがフォームに追加された後にコントロールを操作するときに表示されるようにする場合は、Gaijin42 のアプローチが機能するはずです。
カスタム描画コントロールがどのように見えるかを確認しようとしている場合...
コントロール内のメソッドをオーバーライドした場合、フォーム (または別のコントロール) に追加された後にコントロールを見ると
OnPaint
、その結果が表示されます。OnPaint
Paint
コントロール自体のデザイナーを見たときに結果を見ようとしている場合、それは可能ではないと思います(少なくとも VS2005 ではそうではありませんでした):残念ながら、これは不可能です。ユーザー コントロールの動作を記述している間、コードはコンパイルされず、デザイナーは実際には通常のユーザー コントロールを使用して子コントロールをホストします。
OnPaint
オーバーライドなどは実行されません。コントロールのオーバーライドをデバッグするには、ある種のホストで実行する必要があります。VS2005 はこの目的のために新しいコントロール ホストを提供しますが、これでも十分でない場合があります。