- - PR -
DataGrid(Windows Form)のチェックボックスについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-05-05 23:31
いつもお世話になっております。
DataGrid(Windows Form)でチェックボックスを使用したいためにDataGridBoolColumnを用いたのですが、チェックボックスの値が変更された時に発生するイベントを取得したいのですが、実現出来ずに困っています。 既出の質問のようで、データグリッドを継承した、カスタムグリッド内にColumnStartedEditingをオーバーライドさせる事でイベントを取得する事が出来ると以下のURLには書かれているのですが、 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9380&forum=7&3 オーバーライドしたColumnStartedEditingの中にどのような処理を書けばいいのか分かりません。 既出の質問で申し訳ないのですが、分かる方いらっしゃいましたらご回答をお願い致します。 | ||||||||
|
投稿日時: 2004-05-06 00:20
諸農です。
こんなのがあったんですね。勉強になります。
えっと、カラムスタイル単位でイベントを実装させるのであ れば、まずはオーバーライドした元コードの呼び出しを行っ てから、自分で定義したイベントハンドラを呼び出せばいい のではないでしょうか。もしくはControlパラメータを使って Controlのイベントハンドラを呼び出してもいいかも。 利用側は、イベントデリゲートタイプと同じメソッドを準備 しておいて、ハンドラに登録すればイベントが発砲されるタ イミングで、通知を受け取る事が出来ますよね。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-05-06 02:13
Jubeiさん、ご回答ありがとうございます。
実は自分はオーバーライドを行ったメソッドの拡張を今までに少ししかやった事がなく、どういった理屈で今回の教えて頂いた処理も実現出来るのかが今ひとつ理解出来ていません。 今までにも.NET既存のメソッドのオーバーライドについては調べようとはしたのですが、まわりに詳しい者がおらず何を調べれば拡張の手順や方法論を理解出来るのかがさっぱりでして。。。 丁寧に手順を教えて頂いた後で大変申し訳ないのですが、よろしければ教えて頂いた方法を理解するのに役立つHPか文献、もしくはサンプルソース等を教えて頂ければと思います。 | ||||||||
|
投稿日時: 2004-05-06 12:09
追記です。
一応分からないなりに教えて頂いた方法に沿って書いたソースを記述します。 '自分で定義したイベントハンドラ Public Delegate Sub BoolColumnCheckChanged() 'DataGrid拡張クラス Public Class DataGridPlus Inherits System.Windows.Forms.DataGrid 'ColumnStartedEditingをオーバーライド Protected Overloads Overrides Sub ColumnStartedEditing(ByVal editingControl As System.Windows.Forms.Control) 'オーバーライドした元コードの呼び出しを行う Me.ColumnStartedEditing(editingControl) '? (ここで自分で定義したイベントハンドラを呼び出す?) End Sub End Class -------------------------------------------------- 利用側については、Form_Loadイベントなどの中でAddHandlerでハンドラに登録すれば良いのでしょうか? すみません。手探りでやってはいるのですがなかなか理解度が上がらずに困っています。 解釈の誤っている点、間違っている点がたくさんあると思いますので、修正点についてご指摘頂ければと思います。 | ||||||||
|
投稿日時: 2004-05-07 01:10
諸農です。
DataGridBoolColumn派生で考えてみました。 試してはいないのですが「編集開始通知」の方だと クリック単位での追跡が出来ないからと思って。。 最終的にEditメソッドとPaintメソッドのoverrideで 「クリックされた」という事を知る事が出来るように はなったのですが、見た目は変更されている様に見え るCheck後の値をどうしても取得することができなか ったんです。。ちょっと悔しい(-_-;) #Commitされるまではダメみたいな感じ。。 #目下のところほかに手がないか色々やっております。 で、申し訳ないのですが、コードはC#で記述しています。。m(__)m
こんな感じです。。 参考になればいいのですが。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-05-07 01:58
申し訳ないのですが、VB.NETは全然判らないので。。 参考になるサイトとしては、GotDotNetのサイトにあるVB.NETのMessageBoardとかUsersSampleのサイトぐらいしか思い付きません。。ごめんなさい。 ただ、VB.NETに関しては書籍が多く出版されているような感じですので、それらを参考にしてもいいのではないかなぁとは思います。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||
|
投稿日時: 2004-05-11 23:19
Jubeiさん御回答ありがとうございます。
お返事が遅くなってしまい申し訳ありません。 現在時間がなかなか取れずに教えて頂いた方法もまだキチンと実現出来ていない状況ですが、引き続き調べを進めていこうと思います。 教えて頂いたMessageBoardとUsersSample良さそうですね。英語サイトなので自分にはちょっと気合が要りそうですが。 やはり書籍で勉強するのが一番なんですね。精進します。 ありがとうございました。 |
1