DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB.Net DataGridのCellイベント

分類:[.NET]

VB.NETでの質問なのです。
DataGridのCell上でキー制御を行いたいのですが、Cell上でKeyDownやLeave等のイベントを使用する方法はないのでしょうか?

DataGrid.KeyDownではCell上キー入力の認識しませんでした。分かる方がいましたら、御教授下さい。
■No31に返信(opqlさんの記事)
> VB.NETでの質問なのです。
> DataGridのCell上でキー制御を行いたいのですが、Cell上でKeyDownやLeave等のイベントを使用する方法はないのでしょうか?
>
> DataGrid.KeyDownではCell上キー入力の認識しませんでした。分かる方がいましたら、御教授下さい。
>

DataGridのKeyDownではなく、TextBoxのKeyDownイベントを捕捉します。

KeyDownイベントを捕捉したい列の列スタイル(DataGridTextBoxColumn)がcsで、イベントハンドラをDataGridCell_KeyDownとするとき、例えば次のようにします。

AddHandler cs.TextBox.KeyDown, New KeyEventHandler(AddressOf DataGridCell_KeyDown)
ありがとうございます。問題解決しました。
しかし、DataGridTextBoxColumnでは[Enter]キーの認識はできないのですね。

今DataGridを使用して色々試しているのですが、ソーステーブルのADD.NEW後、DataGridのTableStyleの再設定をしないと前データの値が保持されてしまう問題が起こったりして結構厄介ですね。
解決済み!
> しかし、DataGridTextBoxColumnでは[Enter]キーの認識はできないのですね。

となると、もし必要なら別の方法を使うことになるでしょうか。

> 今DataGridを使用して色々試しているのですが、ソーステーブルのADD.NEW後、DataGridのTableStyleの再設定をしないと前データの値が保持されてしまう問題が起こったりして結構厄介ですね。

例えば、これと同じ問題でしょうか?
http://www.dotnet247.com/247reference/msgs/20/103272.aspx

DataGridは本当に厄介ですね。
> 例えば、これと同じ問題でしょうか?
> http://www.dotnet247.com/247reference/msgs/20/103272.aspx
>

同じ様な問題だと思います。

Table1 列は A,B,C
DataGrid1
を定義し、DataGrid1のソースはTable1にします。

Table1
A ,B ,C
1行目1 ,2 ,3
2行目4 ,5 ,6

ADD.NEW後、キーボードで1行目か、2行目を変更しても変更できません。
ADD.NEWで追加された行に入力後なら可能です。
対策としてADD.NEW後、御呪いにgetChangesをすればこの問題は起こりません。

他にも3行目のCに入力直後、他に配置されたボタンをクリックしたりすると3行
目のCの値が消えてしうこともあります。

表入力は他のサードパーティー製を使った方が良いかもしれませんね。

DOBON.NET | プログラミング道 | プログラミング掲示板