- PR -

DataGridでEnterキーの押下を拾いたいのですが。

1
投稿者投稿内容
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2005-08-15 17:29
こんにちは。
DataGridTextBoxColumnのKeyDownイベントによって、
通常の'A'や'B'といったキーのKeyDownは拾えるのですが、
Enterキーを押下した時には、KeyDownイベントが発生せず、
拾うことができません。
どうしたら良いか、
どなたかご存知の方がいらっしゃいましたら、
ご教授ください。
お願いいたします。

Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-08-15 17:52
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=17367&forum=7
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=5675
この辺をどうぞ。

//DataGridTextBoxColumnにKeyDownイベントってありましたっけ?
//DataGridのイベント?
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2005-08-15 18:42
早速のご返答ありがとうございます。
DataGridのイベントではないです。
今やろうとしているのは、
DataGridTextBoxColumnを継承したクラスをDataTableのColumnに設定して、
そのTableをDataGridのDataSourceにしたものをフォームに貼り付け、
DataGridのセル内で押下したEnterKeyをフォームで取得することです。
AddHandler objColumn.TextBox.KeyDown, AddressOf Column_KeyDown
でKeyDownイベントは取得できるのですが、Enterキーなどの一部のキーではKeyDownが発生しないため、困っています。
IsInputKeyをオーバーライドすることでEnterKeyでもKeyDownが発生させることができるらしいのですが、DataGridTextBoxColumnのTextBoxのIsInputKeyをどうやってオーバーライドさせれるのか(できないような気もするのですが・・・)がわからないのです。
休み明け早々、まいりました。
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2005-08-15 19:13
Hongliangさんが紹介してくださったリンクにあったコードを真似てやってみたのですが、
EnterKeyでのKeyDownは発生しませんでした。
Return TrueのところをOnKeyDown(e)に変えても、反応せず・・・。
よわりました。

Protected Overrides Function ProcessCmdKey _
(ByRef msg As System.Windows.Forms.Message, _
ByVal keyData As System.Windows.Forms.Keys) As Boolean

If msg.Msg = &H100 Then
If (keyData = Keys.Enter) Then
Return True
Else
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function


[ メッセージ編集済み 編集者: ゆき 編集日時 2005-08-15 19:14 ]
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2005-08-16 13:31
こんにちは
@ITの過去ログを検索したら、1年半くらい前のスレッドでズバリなものへのリンクが掲載されていました。
http://www.mitene.or.jp/~sugisita/vbnet_smp.html
Hongliangさん、お手数かけてしまってすみません。ありがとうございました。
それにしても、ASP.NETのDataGridとWindowsFormのDataGridでは全く異なるのに、同じDataGridという名前なのはちょっと辛いですね。
検索していくと、殆どASP.NETだったりして・・・。
コントロールの名前を変えて欲しいと思ってしまいました。
これからは、スレッドのタイトルにASPかWinかを区別できるようにします。
1

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