- - PR -
DataGridでEnterキーの押下を拾いたいのですが。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-08-15 17:29
こんにちは。
DataGridTextBoxColumnのKeyDownイベントによって、 通常の'A'や'B'といったキーのKeyDownは拾えるのですが、 Enterキーを押下した時には、KeyDownイベントが発生せず、 拾うことができません。 どうしたら良いか、 どなたかご存知の方がいらっしゃいましたら、 ご教授ください。 お願いいたします。 |
|
投稿日時: 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のイベント? |
|
投稿日時: 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をどうやってオーバーライドさせれるのか(できないような気もするのですが・・・)がわからないのです。 休み明け早々、まいりました。 |
|
投稿日時: 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 ] |
|
投稿日時: 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