- PR -

KeyUp」イベントでエンター押下は実行したくない

投稿者投稿内容
ミキ
常連さん
会議室デビュー日: 2006/01/12
投稿数: 28
投稿日時: 2009-01-21 19:54
Vb.Netですが、DataGridViewの「KeyUp」イベントでメッセージボックスのエンター押下時には実行させたくないのですが(プログラム内ではじくとか…)、やり方御存知の方いましたら教えてくださいm(__)m

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2009-01-22 01:19
引用:

ミキさんの書き込み (2009-01-21 19:54) より:

Vb.Netですが、DataGridViewの「KeyUp」イベントでメッセージボックスのエンター押下時には実行させたくないのですが(プログラム内ではじくとか…)、やり方御存知の方いましたら教えてくださいm(__)m


申し訳ないのですが、本題 (太字) の部分の意味がわかりません。 申し訳ありませんが、もう少し丁寧に詳しく多くの方が読めるように書いて頂けないでしょうか?

頑張って読み取ろうとした結果、'DataGridView の (Cell の?) KeyUp イベントで MessageBox を表示しているところがあるのですが、Enter キーの場合は表示したくありません。 Enter キーの場合だけ表示させないようにできますか?' という内容ではないかと思ったのですが、これだと 「Enter キー以外は MessageBox を表示する」 ということになりますので (あまりにユーザビリティが低すぎて) あり得ない、私のこの読みは間違いであろうと判断しました。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
武史
ベテラン
会議室デビュー日: 2007/09/21
投稿数: 71
投稿日時: 2009-01-22 09:31
外してるかもしれませんが、そのメッセージボックスって、
Windows 標準のメッセージボックスじゃなくて、自作のフォームですか?
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2009-01-22 09:49
私はニュータイプではないので外しているかもしれませんが、
もしかして↓のスレッドでおこなったことが絡んでたりするのでしょうかね?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=47958&forum=7
ミキ
常連さん
会議室デビュー日: 2006/01/12
投稿数: 28
投稿日時: 2009-01-22 09:57
すいませんわかりづらくて。
DataGridView 自体の KeyUp イベントでメッセージボックスを表示しているところがあるのですが、そのメッセージボックスが表示されEnterで「OK」を押すと、またDataGridViewの KeyUp イベントが走ってしまうのです。(当然マウスでOKをクリックするとこの現象は起きません。)
EnterでOKし続けると永久ループに入ってしまいます
レイル
常連さん
会議室デビュー日: 2008/10/14
投稿数: 37
投稿日時: 2009-01-22 11:21
これでどうでしょう。

Private Sub test(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles GridView.KeyUp

If e.KeyCode <> Keys.Enter Then
MsgBox("TEST")
End If

End Sub
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2009-01-22 12:07
引用:

ミキさんの書き込み (2009-01-22 09:57) より:

DataGridView 自体の KeyUp イベントでメッセージボックスを表示しているところがあるのですが、


よかったら、このあたりの事情(KeyUp イベント内での処理や、メッセージの内容とか)を詳しく教えてもらえないでしょうか。
というのは、私の感覚だと「DataGridView 自体の KeyUp のタイミングでメッセージボックスを出す」という仕様はありえないんで…。

なんとなく入力エラーを表示しているのかなと推測しましたが、その場合はメッセージボックスではなく、画面の別の場所で通知するなどして、ユーザの操作を邪魔しない方法を(私なら)選ぶと思いますし…。
ミキ
常連さん
会議室デビュー日: 2006/01/12
投稿数: 28
投稿日時: 2009-01-22 12:41
>ぬしさん
回答ありがとうございます^^
その通り、エンター押下時にカレントセルの入力チェックをしてエラーだった場合にメッセージボックスを表示させています。
※ちなみにセルの編集状態からEnterを押してもKeyDownイベントでは拾ってくれないのでKeyUpイベントにも入力チェック処理が入っています。
こんな感じです↓

Private Sub DataGridView_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView.KeyUp
If e.KeyCode = Keys.Enter Then
Select Case DataGridView.CurrentCell.ColumnIndex
Case prConColIdxShohinCD
ret = CheckShohinCode(DataGridView.Item(prConColIdxShohinCD, DataGridView.CurrentCell.RowIndex).Value)
If ret = False Then
MsgBox("商品コードを正しく入力して下さい。", vbCritical)
DataGridView.Focus()
DataGridView.CurrentCell = DataGridView(prConColIdxShohinCD, DataGridView.CurrentCell.RowIndex)
Exit Sub
End If
End Select
End If
End Sub

元のプログラムはAccessでVb.Netで作り直してるのですが、(ある事情で)全く同じ動きにしなければならず、元プログラム通りにメッセージボックスでエラーを通知したいのですが…。

※タイトルや最初の質問見ても意味分からないですね。混乱させた皆様すみませんでしたm(__)m

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