2011-08-01 23 views
5

..私はDataGridViewの中で削除右クリックで、単一の行を削除する機能を持っているのDataGridView

コード複数の行を削除します。

private void dataGridView1_MouseDown(object sender, MouseEventArgs e) 
    { 

      if (e.Button == MouseButtons.Right) 
      { 
       var hti = dataGridView1.HitTest(e.X, e.Y); 
       if (hti.RowIndex != -1) 
       { 
        dataGridView1.ClearSelection(); 
        dataGridView1.Rows[hti.RowIndex].Selected = true; 
       } 
      }   
    } 

    private void DeleteRow_Click(object sender, EventArgs e) 
    { 
      Int32 rowToDelete = dataGridView1.Rows.GetFirstRow(DataGridViewElementStates.Selected); 
      if (rowToDelete != -1) 
      { 
       dataGridView1.Rows.RemoveAt(rowToDelete); 
       dataGridView1.ClearSelection(); 
      }   
    } 

を今、私は選択に複数の行を削除したいです。
まず、なぜ複数の行を選択できないのか分かりません。
第2回削除ボタンを使用して複数の削除を削除し、マウスの右クリックをしたいです。

誰かが私を助けることができますか?

答えて

10

編集: コードを見てください。選択した行は、HitTestメソッドの結果に応じて設定しています。 DataGridViewプロパティSelectedRowsは、選択されている行を決定します。なぜHitTestを実行する必要があるのか​​分かりませんが、もう一度、必要な機能について完全に説明していない可能性があります。

if (e.Button == MouseButtons.Right) 
{ 
    var hti = dataGridView1.HitTest(e.X, e.Y); 
    if (hti.RowIndex != -1) 
    { 
     dataGridView1.ClearSelection(); 
     dataGridView1.Rows[hti.RowIndex].Selected = true; 
    } 
} 

MultiSelectプロパティは、あなたのデータグリッド上trueに設定されていることを確認してください。

foreach (DataGridViewRow row in DataGridView1.SelectedRows) 
{ 
    DataGridView1.Rows.Remove(row); 
} 
+0

複数の選択が動作しますが、右クリックで削除...複数の行を選択して右クリックすると、1行だけが選択されます...なぜこれが起こっていますか – user175084

+1

DataGridの 'SelectionMode'プロパティをチェックしましたか?セルだけでなく、行全体を選択していますか? –

+0

はい私は、セルだけでなく、完全な行を選択しています。選択モードはどこですか?ありがとう – user175084

3

以下の場合気になってください:

その後、あなたはあなたの選択の際にSelectedRowsプロパティを利用することができますが、データグリッド内のレコードを削除する必要がある場合

を、 はしないでください

例:私はDataGridで1行目と2行目を削除したいが、私はそのrowIndexをDataGridに保存しておきます。 DataGridで行1を削除した後、2行目のデータが1行目にSHIFT UPし、 3行目のデータが2行目に移動する データグリッドrowIndexを使用して削除するデータを特定するため、 結果:data1とdata3が最後に削除されます。

関連する問題