2009-03-17 9 views
0

私はコントロールをホストするカスタムのDataGridViewセルクラスを書いています。私はInvalidatedイベントを聞いて、セルの位置を変更して再描画する必要があるかどうかを知っていますが、セルを再配置すると他のホストセルが無効になり、最初のセルが無効になるためループが発生します。ループを避けるために静的メンバーを使用するのは似ていませんが、無関係なセルクラスによってループが発生するのを防ぐことはできません。だから私はグリッドが現在無効になっているかどうかを確認する必要があります。それ、どうやったら出来るの?コントロールが現在無効になっているかどうかを確認するにはどうすればよいですか?

答えて

0

Invalidatedイベントをリッスンして応答するのではなく、DataGridViewCellクラスのPaintメンバーをオーバーライドするように思えます。基本クラスはそれを処理し、Paintメソッドにグラフィックスオブジェクトと位置情報を直接提供します

+0

私はhttp://stackoverflow.com/questions/654330/can-i-have-an-offscreen-controlの回答が得られない限り、私はコントロールの位置を同期させることに固執しています。 – Simon

1

無効にされたイベントを「リッスン」する必要はありません。ユーザーコントロールが無効になると、onpaintが自動的に呼び出されます。

あなたの究極の問題(カスタムdatagridviewを描画するwrt)を解決するには、より良い方法があるかもしれません。実装についての詳細な質問を投稿したり、これらの問題(一見奇妙な問題)を回避する必要がないようにする方法についてのいくつかのアイデアを尋ねることができます。

+0

すでにありました - http://stackoverflow.com/questions/225972/how-do-i-host-a-control-in-a-datagridviewcell-for-displaying-as-well-as-editing- 1つの答えを得ました、それは間違っていた。 – Simon

関連する問題