質問

私は、複数の列と行とのDataGridViewを持っています。 最初の列にはチェックボックスが含まれています。 私は、ユーザーが複数のチェックボックスを選択し、アクションを実行できるようにしたいです。 それらが行1および2にチェックボックスを選択した場合、例えば、行1及び2における他の列からのデータは、メッセージボックスに選択して渡すことができます。

私は私がこれを行うにはcheckbox_changedイベントを使用する必要があります知っています。しかし、私は複数の行のためにこれを行う方法を取り組んで問題が発生したのでしょうか?

役に立ちましたか?

解決

ボタンをクリックしてイベントに行います:

static int SelectColumnIndex = 0;
PerformAction_Click(object sender, System.EventArgs e)
{
    string data = string.Empty;
    foreach(DataGridViewRow row in MyDataGridView.Rows)
    {
      if(row.Cells[SelectColumnIndex].Value!=null &&
             Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)
      {
        foreach(DataGridViewCell cell in row.Cells)
        {
          if(cell.OwningColumn.Index!= SelectColumnIndex)
          {
            data+= (cell.Value + " ") ; // do some thing
          }
        }
        data+="\n";
      }
   }
   MessageBox.Show(data, "Data");
}

他のヒント

あなたは、ユーザーがアクションを実行するボタンをクリックします。

、そして何を処理するために必要なのボタンをクリックすると、ちょうどすべてを通過...ボタンのClickイベントではなく、チェックボックス変更イベントですあなたのDataGridViewの行と確認し、チェックボックスで行に対してアクションを実行します。

static int SelectColumnIndex = 0;

PerformAction_Click(object sender, System.EventArgs e)
{
    string data = string.Empty;    

    foreach(DataGridViewRow row in MyDataGridView.Rows)     
    {
        if(row.Cells[SelectColumnIndex].Value != null 
            &&
         Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)       
        {
            foreach(DataGridViewCell cell in row.Cells)        
            {
                if (cell.OwningColumn.Index != SelectColumnIndex)                               
                {
                    data+= (cell.Value + " ") ; // do some thing           
                 }
            }

            data+="\n";
        }
    }

    MessageBox.Show(data, "Data");
}

私はあなたがどんなイベントに必要といけないと思います 私は、このコードによって、この問題を解決します:

//In Fill DataGridViewEvent :
        DataGridViewCheckBoxColumn ChCol = new DataGridViewCheckBoxColumn();
        ChCol.Name = "CheckedRow";
        ChCol.HeaderText = "انتخاب";
        ChCol.Width = 50;
        ChCol.TrueValue = "1";
        ChCol.FalseValue = "0";
        dg.Columns.Insert(0, ChCol);

// In Button Event put these codes:

            try
            {
                MessageBox.Show(row.Cells[2].Value.ToString() + " --> " +
                row.Cells["CheckedRow"].Value.ToString());
            }
            catch
            {
                // Nothing Act
            }


enter code here

このパラメータによって、あなたの出力:     アイテムID - > 0 //未確認の値について     アイテムID - > 1 //チェック値のための

今、あなたはあなたの行動のための値として1を返す行をフィルタリングすることができます 私はこのコードをテストし、それが私のために働く。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top