- PR -

DataGrid上に配置したCheckBoxのイベント

1
投稿者投稿内容
tai
会議室デビュー日: 2005/02/23
投稿数: 5
投稿日時: 2005-08-02 15:18
いつも拝見させていただいています。
VB.NETのWindowsアプリケーションにてDataGrid上のカラム内にCheckBox列を1つ配置しています。
そこで質問なのですが、このCheckBox内で発生したイベントを知る事はできるのでしょうか。具体的にはKeyDownイベントを取得してスペースキーが押されたときに、自動的に次の行に移動させるようなことを行ないたいのです。(スペースキー押下でチェックボックスの値が変わり次の行のチェックボックスへ移動するという動きです)

CheckBoxでのイベントでなくても、グリッドのKeyDownイベントにて、現在どこのカラムにフォーカスがあるか知ることができれば、そちらでも構いません。

ご存知の方いらっしゃいましたら、よろしくお願い致します。

※下記サイトを参考にグリッドへのチェックボックス表示をしています。
[DataGridにチェックボックスを表示する]
http://dobon.net/vb/dotnet/datagrid/boolcolumn.html
がつん
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 62
お住まい・勤務地: Sydney
投稿日時: 2005-08-02 15:46
こんにちは。
GRIDのKEYDOWNイベントにAttributes.AddでKeyDownイベントを追加
したら、KeyDownは取れるんじゃないかと思います。

チェックボックスのCLICKイベントを取得したいなら、追加するCHECKBOX CONTROL
にAttributes.Addで取得できるんじゃないでしょうか。
tai
会議室デビュー日: 2005/02/23
投稿数: 5
投稿日時: 2005-08-02 16:15
がつんさんお返事ありがとうございます。

早速、Attributes.Addについて、よく分からなかったので調べてみました。それでも実装方法がまだ良く分からず悩んでいます。Attributes.Addについて検索するとASP.NETの記事がたくさんヒットするのですが、Windowsアプリケーションでも同じようなことが可能なのでしょうか。
がつん
ベテラン
会議室デビュー日: 2003/07/07
投稿数: 62
お住まい・勤務地: Sydney
投稿日時: 2005-08-02 16:27
taiさん、ごめんなさい・・・
Webアプリと思い込んでいました・・・
Private Sub DataGrid1_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles DataGrid1.KeyDown
End Sub
で、KeyDownイベントを取得できると思います。

tai
会議室デビュー日: 2005/02/23
投稿数: 5
投稿日時: 2005-08-02 17:28
がつんさん何度もありがとうございます。

DataGridにおいてはKeyDownイベントは通常の方法で取得できませんでした。
そこで、現在はDataGridの派生クラスを作成しKeyDownイベントを発生させています。

ただ、どのセルでKeyDownイベントが発生したか取得するには・・ずっと悩んでいました。
少し落ち着いて考えてみると、DataGrid.CurrentCell.ColumnNumberで現セル番号が取得すれば良いことが分かり、目的のセルでのKeyDown時にイメージ通りの動きを実現することができました。

今考えると、お恥ずかしい限りです。お付き合い頂きましてありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)