
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No.1です。
状況としては、Button1_Clickの前に何らかのイベントでCurrentCell.RowIndexが-1されていると思うので、DataGridView1の他のイベントで書き換えていませんか?
例えば DataGridView1_LostFocusなどで。
またはDataGridView1_CellLeaveでセルがフォーカスを失った所にブレークポイントを入れて、トレースしてみてはどうでしょうか?
回答ありがとうございます。
記載していただいた通り、DataGridViewから呼び出されるイベントに全てブレークポイントを置いてみましたが、特に何か影響を及ぼしている箇所は見つけられず。。
選択行を削除したい機能でしたので、
IsNewRowプロパティはあきらめて、
ClickイベントやKeyPressイベントが押された時に選択行を保存して、削除ボタンを押した時に、選択されていた行がMaxRows-1の値かどうかを調べて新規行かどうかを判断することにしました。
ご回答、ありがとうございました
No.1
- 回答日時:
>If DataGridView1.CurrentRow.IsNewRow = False Then
>'処理を記述
>End If
で、
>新規行を選択しているにもかかわらず、IsNewRowプロパティがFalseとなってしまいます。
と言う事は、新規行を選択していても「'処理を記述」の処理をしてしまうという事でしょうか?
前後が分からないのですが、もしかしたら予期しないイベントでIsNewRow=Faldeの状態でそこを通ってしまうのかもしれないので、If行にブレークポイントを設定するか、
If DataGridView1.CurrentRow.IsNewRow = False Then
Debug.Print("IsNewRow = False")
'処理を記述
Else
Debug.Print("IsNewRow = True")
End If
とかにして、そこをどのように通過したかを調べてみてはどうでしょうか?
1度はTrueで通って、その後Falseで再び通過するような事は無いでしょうか?
この回答への補足
回答ありがとうございます。
>と言う事は、新規行を選択していても「'処理を記述」の処理をしてしまうという事でしょうか?
はい、その通りです。
補足しますと、
DataGridViewの新規行を選択した状態で、
コマンドボタンクリックのイベントを発生させます。
すると、新規行を選択しているにもかかわらず、IsNewRowがFalseとなっています。
また、CurrentCell.RowIndexが「新規行-1」の値を出しています。
(本来の新規行のRowIndexが5ならば、4が返ってきます)
以下のコードのように、選択した行をDataGridView上から削除する処理を記述しているのですが、新規行を選択していた場合、新規行の前の行が削除されてしまいます。
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
If DataGridView1.CurrentRow.IsNewRow = False Then
DataGridView1.Rows.RemoveAt(DataGridView1.CurrentCell.RowIndex)
End If
End Sub
ボタンクリックイベントが実行された直後から1行ずつ実行して試してみましたが、IsNewRowは最初からFalseとなっています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
C# DataTableに最後に追加した行をDataGridView上で選択状態にする方法は?
C言語・C++・C#
-
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
VB.net
Visual Basic(VBA)
-
-
4
DataGridViewに空白がある場合はエラーにしたい
Visual Basic(VBA)
-
5
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
6
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
7
[C#] DataGridViewでコンボボックスでの変更がdataTableに反映されません
その他(プログラミング・Web制作)
-
8
CellEnterイベント仕様について
Visual Basic(VBA)
-
9
DataGridViewの桁数制限に関して
Visual Basic(VBA)
-
10
DataGridViewのフォーカス遷移について
Visual Basic(VBA)
-
11
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
UMLでの例外処理
-
switch の範囲指定
-
【Excel】特定の文字を含むセル...
-
VBAでループ内で使う変数名を可...
-
VBAでCOPYを繰り返すと、処理が...
-
EXCEL VBA マクロ 実行する度に...
-
ボタンクリックイベント 重複...
-
月度は何て読みますか?
-
メルカリのメルカードで買い物...
-
VB.NET Excelを読み込んでDataT...
-
リョウ・・・量?料?
-
EXCEL2003 VBAで2つのDBに接続...
-
Do~Loopした回数をカウントしたい
-
DoEventsがやはり分からない
-
findは動くがfindnextがマクロ...
-
VB6 DoEventsの代わりは?
-
Loadイベント中にほかのイベン...
-
インタラクティブの反対語は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
【Excel】特定の文字を含むセル...
-
switch の範囲指定
-
VBAでループ内で使う変数名を可...
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
銀行の窓口処理の件で知ってる...
-
VBAでCOPYを繰り返すと、処理が...
-
月度は何て読みますか?
-
インタラクティブの反対語は?
-
VB.NET DataGridViewでIsNewRo...
-
DoEventsがやはり分からない
-
VBの質問#if 0 then ってどう...
-
お家デートをしててハグを長い...
-
セックスレスの既婚女性は自慰...
-
VB.NET Excelを読み込んでDataT...
-
リョウ・・・量?料?
-
メルカリのメルカードで買い物...
-
Loadイベント中にほかのイベン...
おすすめ情報