2017-08-16 5 views
0

Datagridviewには3つの行があります。私はrunnigアプリケーションの後にそれを参照してください。なぜRowsAddedはすべての行を返さないのですか?

しかし、RowsAddedイベントを使用すると、コンソールに0,1と表示されます。それは0,1,2である必要があります、なぜですか?

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) 
{ 
    Console.WriteLine(e.RowIndex); 
} 

私はdataGridView1_RowsAddedを使用してセルデータを変更します。あなたが前の2行が(日付)変更されたことがわかります

enter image description here

:それは最後の行を除くすべての行のために動作します。

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) 
{ 
    Console.WriteLine("ok"); 

    string birthday = dataGridView1.Rows[e.RowIndex] 
     .Cells["dataGridViewTextBoxColumn42"].Value.ToString(); 
    DateTime dt = DateTime 
     .ParseExact(birthday, "dd/mm/yyyy", CultureInfo.InvariantCulture); 

    birthday = dt.ToString("dd-MM-yyyy", CultureInfo.InvariantCulture); 
    dataGridView1.Rows[e.RowIndex] 
     .Cells["dataGridViewTextBoxColumn42"].Value = birthday; 
} 

答えて

0

trueにDatagridviewプロパティAllowUserToAddRows設定した場合、最後の行が挿入するためのものであり、@Fruchtzwergさて

+0

それは本当に間違っています – OPV

+0

はい、あなたはそれを試すことができます。 –

+0

それは理由ではありません。プロパティ 'AllowUserToAddRows'は私の質問 – OPV

1

挙動をMSDNに記載されて:行がDataGridViewコントロールに追加されたとき

RowsAddedイベントが発生最後は

最小例はなかったです。ユーザーが新しいレコードの行を使用して新しい行を追加すると、このイベントのハンドラーのRowIndex値は、新しいレコードの行の新しい位置のインデックスに等しくなります。ただし、プログラムで行を追加すると、RowIndex値は最初に追加された行のインデックスになります。

RowIndex

まず追加した行のインデックスを取得します。

最後の行は新しいデータを挿入することです。つまり、ユーザーが有効なデータを挿入するまで、この行はソースに追加されません。この時点で、データを挿入する新しい行がポップアップ表示されます。

+0

を述べたように、次にどこにデータを挿入する再フォーマットすることができますか? – OPV

+0

https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/specify-default-values-for-new-rows-in-the-datagrid – Fruchtzwerg

+0

私は何も見つかりませんでしたリンクによって – OPV

関連する問題