2017-11-01 4 views
2

DataGridViewの各行(2列目)の最後に削除ボタンがあります。クリックすると、DataGridとグリッドのデータソースであるリストから行が削除されます。オンボタンC#ボタンを使ってDataGridViewのリストから要素を一度だけ削除します

enter image description here

private List<multiSet> createdMap = new List<multiSet>(); 

私は要素が(DrawGridという名前の)私のDataGridViewを形成し、削除することができますが、それが唯一の最初のクリックのために働く]をクリックし、その後、私は、任意の要素

private void DrawGrid_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     if (e.RowIndex < 0) 
      return; 

     if (e.ColumnIndex == 1) 
     { 
       createdMap.RemoveAt(e.RowIndex); 
       DrawGrid.DataSource = createdMap.ToList(); 
     } 

    } 
+1

DrawGrid_CellContentClickを入力するか、単に何もしないんボタンをクリックするとどうなりますか? –

+0

行を作成するコードは何ですか? – dcg

+1

はい、デバッグ時にフェスト削除後にDrawGrid_CellContentClickと入力しますが、何も起こりません.DrawGridのDataSourceを最初に設定すると、列インデックスが0(ボタンの列は1です)の – eudaimonia

答えて

0

を削除することはできません私は2列しか使用せず、DataGridView Design MetroUIフレームワークを作成しているので、列のインデックスが1であるかどうかを確認する必要はありません。列0をクリックすると数値を編集できません。

だから、ちょうどその私の要素を削除するために十分です:

private void DrawGrid_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     if (e.RowIndex < 0) 
      return; 

     createdMap.RemoveAt(e.RowIndex); 
     DrawGrid.DataSource = createdMap.ToList(); 
    } 

@RezaAghaeiによると、これは良いアイデアされて答える:デバッグするとき、それは

private void MultisetGrid_CellContentClick(object sender, DataGridViewCellEventArgs e) 
     { 
      if (e.RowIndex < 0) 
       return; 

      if (e.ColumnIndex == 1) 
      { 
       createdMap.RemoveAt(e.RowIndex); 
       DrawGrid.DataSource = null; 
       DrawGrid.DataSource = createdMap; 
      } 

     } 
+0

それは本当に私には意味がありませんが、うまくいくとすればOKY = P –

+0

はい、かなり奇妙に見えますが、MetroUI(for winforms)はそうではありませんおそらくそれはそのようにはならないでしょう:D – eudaimonia

関連する問題