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

DATAGRIDのCELLに対するKEYUPイベント

環境/言語:[VB.NET]
分類:[.NET]

よろしくお願いします。
下記コードです。

Private Sub frm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim ts As New DataGridTableStyle
ts = DATAGRID.TableStyles(0)
Dim cs As DataGridTextBoxColumn = CType(ts.GridColumnStyles(2), DataGridTextBoxColumn)
Dim tb As TextBox = cs.TextBox
AddHandler tb.KeyUp, AddressOf tb_KeyUp

End Sub
------------------------------------------------------
Private Sub tb_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs)
Console.WriteLine("KeyUp キー({0})が押されました。", e.KeyCode)
End Sub

フォームのロードでDATAGRIDのKEYUPイベントを追加して、それを捕捉したらLOGを出力するようにしたのですが、DATAGIRDの3番目の列(2)に色々入力してもKEYUPイベントが起こりません。

KEYDOWNでコーディングすると、ちゃんとイベントが起こってLOGを出力するのですが??

識者の方よろしくお願いします。
残念。 


■No10229に返信(toypapaさんの記事)
> よろしくお願いします。
> 下記コードです。
>
> Private Sub frm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
>
> Dim ts As New DataGridTableStyle
> ts = DATAGRID.TableStyles(0)
> Dim cs As DataGridTextBoxColumn = CType(ts.GridColumnStyles(2), DataGridTextBoxColumn)
> Dim tb As TextBox = cs.TextBox
> AddHandler tb.KeyUp, AddressOf tb_KeyUp
>
> End Sub
> ------------------------------------------------------
> Private Sub tb_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs)
> Console.WriteLine("KeyUp キー({0})が押されました。", e.KeyCode)
> End Sub
>
> フォームのロードでDATAGRIDのKEYUPイベントを追加して、それを捕捉したらLOGを出力するようにしたのですが、DATAGIRDの3番目の列(2)に色々入力してもKEYUPイベントが起こりません。
>
> KEYDOWNでコーディングすると、ちゃんとイベントが起こってLOGを出力するのですが??
>
> 識者の方よろしくお願いします。
>
>
>
意味なくスレッドを上げることは、身勝手な行為といえますので、ご遠慮ください。分かる方がいらっしゃらないのであれば、回答がなくても仕方の無いことではないでしょうか。
失礼いたしました。<(_ _)>
#今更だし識者じゃないけど(^_^;)

 DataGridTextBox は ProcessKeyMessage メソッドをオーバーライドしているようです。想像でしかありませんが、 WM_KEYUP メッセージ受信時に OnKeyUp メソッドを呼び出さないようになっているのではないでしょうか。

 試しに上記の処理を行うような継承クラスを作成し、 DataGridTextBoxColumn.edit プライベート フィールドを無理矢理書き換えてみました。すると意図した通りに KeyUp イベントが発生したので、恐らくそういうことなのだと思います。

 尤も、この方法をお勧めはしません。 KeyUp イベントを発生させないようにしているのには何らかの理由があるのでしょうから、このようなことをしたらどこかで不具合が出るかも知れません。
RESありがとうございます。

私のコーディングがおかしいだけかと思っていましたが、上位クラスの関係があるとはそんなところまでは創造できていませんでした。

ありがとうがとうございました。
処理的代案を考えて、対応しようと思います。
感謝。<(_ _)>
■No10474に返信(toypapaさんの記事)
> RESありがとうございます。
>
> 私のコーディングがおかしいだけかと思っていましたが、上位クラスの関係があるとはそんなところまでは創造できていませんでした。
>
> ありがとうがとうございました。
> 処理的代案を考えて、対応しようと思います。
> 感謝。<(_ _)>
>
解決済み!

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