2016-10-17 7 views
1

DataGridビューでユーザーが選択した行がnewrowではないかどうかをチェックする方法は?DataGridView選択された行があり、それがNewRowではないかどうかを確認します。

私はこれまでのところ、これを試みたが、期待通りに動作していない:

If Not IsNothing(Grid.CurrentRow) And Not Grid.CurrentRow.IsNewRow Then 
End If 

最初の文は、[OK]を動作しますが、それは第二、それは常にあなたが持っている場合は、私が

+0

どこでこのコードを使用していますか、どのようにしてそれが必要なのですか? –

+0

@TimSchmelterこれはボタンクリックイベントです。 2番目のステートメントは、newRowを選択しても常にfalseを返します。 –

+0

元の投稿は 'VB.NET'だけでタグ付けされていましたが、私が投稿した回答はC#であり、@ JimmyJimmに受け入れられたので、C#タグも質問に追加しました。 –

答えて

0

をNewRow選択した場合でもfalseを返すために来るときに思えます新しい行が選択された場合、DataGridViewはそのOnValidatingメソッドの現在の行を変更します。したがって、新しい行を選択したときにButtonをクリックすると、その行は選択されたままですが、現在の行は前の行に変更されます。

ので、代わりのあなたは ButtonClick場合には、このチェックを行いたい場合は、現在の行をチェックするには、それが SelectedRowsためのより良いチェックです:

C#

if (dataGridView1.SelectedRows.Count == 1 && 
    dataGridView1.SelectedRows[0].Index == dataGridView1.NewRowIndex) 
    MessageBox.Show("New Row Selected"); 

VB.NET

If (DataGridView1.SelectedRows.Count = 1 AndAlso _ 
    DataGridView1.SelectedRows(0).Index = DataGridView1.NewRowIndex) Then 
    MessageBox.Show("New Row Selected") 
End If 

注:問題のあなたの提供されたコードは、コントロールがfocudedされるまで動作します。

関連する問題