4

Winforms アプリケーションに datagridview があります。ユーザーは datagridview の任意の場所をクリックしてから、ボタンをクリックしてそのデータ行でアクションを実行できます ただし、これを行うには、その行から ID を回復する必要があります ここで、ユーザーはおそらく ID 列をクリックしていないことを念頭に置いてください.Value はここでは役に立たない

次のコードを試しました

DataGridViewRow row = dataIPs.SelectedRows[0];
DataGridViewCell cell = row.Cells[0];
string value = cell.Value.ToString();

しかし、これにより Out Of Bounds エラーが発生します。

ユーザーが実際に選択した列に関係なく、datagridview の特定の列から値を取得するにはどうすればよいですか。

答え

最終的に私のために働いたコードは次のとおりです:

DataGridViewRow row = dataIPs.CurrentCell.OwningRow;
string value = row.Cells["IPID"].Value.ToString();
4

4 に答える 4

3

SelectedRows行が選択されていないときに、コレクションにアクセスしようとしているようです。

のデフォルトの選択モードDataGridViewはでCellSelectあり、このモードでは、セルをクリックすると行が選択されません。

選択モードを変更するか、別の方法で目的の行を取得する必要があります。

  • FullRowSelectデザイナまたはコードで実行できる選択モードを変更できます。

    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    
  • または、選択したセルとその行にアクセスできます。

    DataGridViewRow row = dataGridView1.Rows[dataGridView1.SelectedCells[0].RowIndex];
    

    またはこのように:

    DataGridViewRow row = dataGridView1.CurrentCell.OwningRow;
    
于 2012-05-31T13:52:03.727 に答える
0

SelectionModeプロパティをFullRowSelectに設定します。これはSelectedRowが機能するために必要です

于 2012-05-31T13:52:19.133 に答える
0

イベント引数から値を取得してみてください。

于 2012-05-31T13:43:56.067 に答える
0

データグリッドビューにボタン付きの列を追加することもできます。その後、eventargs に「RowIndex」および「ColumnIndex」プロパティを持つ datagridview からイベント「CellContentClick」をキャッチできます。

于 2012-05-31T14:02:25.717 に答える