- PR -

DataGridView内でのENTERの処理

1
投稿者投稿内容
ゆうじ
常連さん
会議室デビュー日: 2008/01/28
投稿数: 31
お住まい・勤務地: 東京都
投稿日時: 2008-01-28 21:26
開発環境:VB2005
いつもお世話になっております。初歩的な事で質問させて下さい。

1つのフォーム内にAAADataGridView(親)、BBBDataGridView(子)があります。
通常ですとAAADataGridView内でENTERキーを押しますとカーソルが下に移動しますが、移動をさせずにBBBDataGridViewへカーソルを移動させたいのですが何か良い方法はございませんでしょうか?
よろしくお願いします。

[ メッセージ編集済み 編集者: さやまん 編集日時 2008-01-29 09:23 ]
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-01-29 10:36
引用:

さやまんさんの書き込み (2008-01-28 21:26) より:

1つのフォーム内にAAADataGridView(親)、BBBDataGridView(子)があります。
通常ですとAAADataGridView内でENTERキーを押しますとカーソルが下に移動しますが、移動をさせずにBBBDataGridViewへカーソルを移動させたいのですが何か良い方法はございませんでしょうか?


タイトルと本文が変わっているような気がしますが、
現在詰まっていることは DataGridView のセルで Enterキー の KeyPress イベントを補足できないというので悩んでいますか?

だとしたらこのあたりかな?
http://dobon.net/vb/dotnet/datagridview/textboxevent.html
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-01-29 10:37
引用:

さやまんさんの書き込み (2008-01-28 21:26) より:

1つのフォーム内にAAADataGridView(親)、BBBDataGridView(子)があります。
通常ですとAAADataGridView内でENTERキーを押しますとカーソルが下に移動しますが、移動をさせずにBBBDataGridViewへカーソルを移動させたいのですが何か良い方法はございませんでしょうか?


普通にキーを捕捉して BBBDataGridView にフォーカスを移すだけですよね。 DataGridViewTextBoxEditingControl でのお話でしょうか? これまでどんな方法を試されたのでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ゆうじ
常連さん
会議室デビュー日: 2008/01/28
投稿数: 31
お住まい・勤務地: 東京都
投稿日時: 2008-01-29 21:45
じゃんぬねっとサン、かるあサン返答ありがとうございます。

普通にキーを捕捉して BBBDataGridView にフォーカスを移すだけですよね。 DataGridViewTextBoxEditingControl でのお話でしょうか? これまでどんな方法を試されたのでしょうか?

コントールの移動を下記のコードで行いました。
If e.KeyCode = Keys.Enter Then
If e.Control = False Then
Me.SelectNextControl(Me.ActiveControl, Not e.Shift, True, True, True)
End If
End If
ですが、上記の方法ですとENTERキーを押しますとAAADataGridViewのレコードが1行下の行に移動してしまいます。おっしゃるとおりENTERキーの補足の方法がわかりません。
お手数をお掛けしますがよろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-01-30 10:03
引用:

さやまんさんの書き込み (2008-01-29 21:45) より:

コントールの移動を下記のコードで行いました。
If e.KeyCode = Keys.Enter Then
If e.Control = False Then
Me.SelectNextControl(Me.ActiveControl, Not e.Shift, True, True, True)
End If
End If


私からの確認事項がわかりにくかったかもしれませんので、もう一度書かせて頂きます。

DataGridView コントロール上で Key を捕捉したいのでしょうか? それとも DataGridView の各セル (DataGridViewTextBoxEditingControl) が編集中の状態で Key を捕捉したいのでしょうか?

後者であれば、かるあさんのレスが参考になります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ゆうじ
常連さん
会議室デビュー日: 2008/01/28
投稿数: 31
お住まい・勤務地: 東京都
投稿日時: 2008-01-30 11:40
引用:

じゃんぬねっとさんの書き込み (2008-01-30 10:03) より:
引用:

さやまんさんの書き込み (2008-01-29 21:45) より:

コントールの移動を下記のコードで行いました。
If e.KeyCode = Keys.Enter Then
If e.Control = False Then
Me.SelectNextControl(Me.ActiveControl, Not e.Shift, True, True, True)
End If
End If


私からの確認事項がわかりにくかったかもしれませんので、もう一度書かせて頂きます。

DataGridView コントロール上で Key を捕捉したいのでしょうか? それとも DataGridView の各セル (DataGridViewTextBoxEditingControl) が編集中の状態で Key を捕捉したいのでしょうか?

後者であれば、かるあさんのレスが参考になります。




お手数をお掛けします。私の説明不足です。申し訳ありません。
再度質問内容を整理しましたのでご確認をお願いします。

1つのフォーム内にAAADataGridView(親)、BBBDataGridView(子)があります。
通常ですとAAADataGridView内で上下キーでレコードを選択しENTERキーを押しますとカーソルが下のレコードに移動しますが、ENTERキーを押したときにレコードの移動はさせずにBBBDataGridView(子)のレコードを表示しBBBDataGridView(子)のレコードの先頭へカーソルを移動させたいのですが何か良い方法はございませんでしょうか?
(レコードの編集はしませんので編集中の捕捉ではないかと思います。)

お手数をお掛けしますがよろしくお願いします。


かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2008-01-30 13:25
引用:

じゃんぬねっとさんの書き込み (2008-01-30 10:03) より:
DataGridView コントロール上で Key を捕捉したいのでしょうか?
それとも DataGridView の各セル (DataGridViewTextBoxEditingControl) が編集中の状態で Key を捕捉したいのでしょうか?


という問いに対し、

引用:

(レコードの編集はしませんので編集中の捕捉ではないかと思います。)


と、回答していることから、前者であると推測します。

KeyEventArgsのプロパティ(microsoft.com)の中に、KeyEventArgs.Handled プロパティ(microsoft.com)があります。

このプロパティの説明は初見では何いってるかわからないと思いますが、
プロパティ値のところに
(KeyEventArgs.Handled プロパティより)
引用:

コントロールの既定の処理を省略する場合は true。コントロールの既定の処理と共にイベントも渡す場合は false。


と書かれています。

「DatagridViewにおいて、Enterキーを押下した時の規定の処理は、次行に移すことでは?」と思えます。
そこで、上述されたコード(何にも書かれてないけど、KeyDownイベントのハンドラでしょう)に、
コード:
e.Handled = True


をどこかに書き足せば、次行に移す処理が省略されるのではと考えられます。
#ってゆうか、省略されたんだけどねw

ゆうじ
常連さん
会議室デビュー日: 2008/01/28
投稿数: 31
お住まい・勤務地: 東京都
投稿日時: 2008-01-31 20:50
かずくんサンありがとうございます。
おかげさまで解決しました。
皆様大変ありがとうございました。
1

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