質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

7467閲覧

DataGridViewでCellValidating(CellValidated)イベントが2回発生しまう。

backfever

総合スコア14

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2018/04/20 02:35

前提・実現したいこと

DataGridViewにてセルの編集を行った後、ボタンにフォーカスを移動させると、CellValidating(CellValidated)が再度コールされてしまいます。

該当のソースコード

VB.NET

1 Private Sub DataGridView1_CellValidating(sender As Object, e As DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating 2 Console.WriteLine("DataGridView1_CellValidating") 3 End Sub 4 5 Private Sub DataGridView1_CellValidated(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValidated 6 Console.WriteLine("DataGridView1_CellValidated") 7 Button1.Select() 8 End Sub 9 10 Private Sub Button1_Enter(sender As Object, e As EventArgs) Handles Button1.Enter 11 Console.WriteLine("Button1_Enter") 12 End Sub 13

試したこと

上記のようなテスト用のソースを作成し、DataGridView1のセルを編集しTABキーでフォーカスを移動させた場合に以下のようなコンソール出力がされます。

DataGridView1_CellValidating
DataGridView1_CellValidated
DataGridView1_CellValidating
DataGridView1_CellValidated
Button1_Enter

CellValidatedでのButton1.Select()を行わないと二度呼ばれることは無いようですが、セルの編集結果にてフォーカスを振り分けたい時などはどのような処理を行えばイベントが二度呼ばれずにすむのでしょうか?
CellValidatingやCellValidated以外のイベントで適正なイベントがあればそれでも構いません。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

複数回呼ばれる、というのは仕様上どうしようもないので、複数回呼ばれても支障がないような構造にしましょう
セルを編集したかどうか、を保持しといてそれ見て処理するとか

投稿2018/05/07 05:32

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

backfever

2018/05/22 01:39

回答ありがとう御座います。ゴタゴタしていて確認が遅れました。 やはり仕様なんですね。他の部分で工夫出来ないか検討してみます。 ありがとうございました。
guest

0

DataGridView.CellEndEdit イベントではどうでしょう?

投稿2018/05/07 05:16

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

backfever

2018/05/22 01:39

他のイベントも含めていろいろ考えてみます。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問