0

バックラウンド ワーカー、tableLayoutPanel、および tablelayoutpanel に (動的に、プログラムによって) 追加する一連のグリッドビューとラベルがあります。

上記のコードは問題なく動作しますが、毎回グリッドビューに追加される行に onclick イベントを追加する必要があります。これどうやってするの?

 var lbltotalcount = tableLayoutPanel1.Controls.Find("lbltotalcount_" + GridId, true);
            ((Label)lbltotalcount[0]).Invoke((MethodInvoker)delegate
            {
                ((Label)lbltotalcount[0]).Text = (Convert.ToInt32(((Label)lbltotalcount[0]).Text) + NumOfMatch).ToString();
            });    

            var obj = tableLayoutPanel1.Controls.Find("dgv_" + GridId, true);


            ((DataGridView)obj[0]).Invoke((MethodInvoker)delegate
            {
                string[] row = new string[] { Word, txturl.Text, Url, NumOfMatch.ToString() };

                DataGridViewRow dgvRow = new DataGridViewRow();
                DataGridViewCell dgvCell;

                dgvCell = new DataGridViewTextBoxCell();                
                dgvCell.Value = Word;
                dgvRow.Cells.Add(dgvCell);                

                dgvCell = new DataGridViewTextBoxCell();
                dgvCell.Value = txturl.Text;
                dgvRow.Cells.Add(dgvCell);

                dgvCell = new DataGridViewTextBoxCell();
                dgvCell.Value = Url;
                dgvRow.Cells.Add(dgvCell);

                dgvCell = new DataGridViewTextBoxCell();
                dgvCell.Value = NumOfMatch.ToString();
                dgvRow.Cells.Add(dgvCell);                                              

                ((DataGridView)obj[0]).Rows.Add(dgvRow);
                ((DataGridView)obj[0]).Refresh();
                ((DataGridView)obj[0]).Update();
            });                    
4

1 に答える 1

2

それがあなたが望むものかどうかわかりません..試してみましょう..

  void yourMethod()
 {
  var lbltotalcount = tableLayoutPanel1.Controls.Find("lbltotalcount_" + GridId, true);
          ((Label)lbltotalcount[0]).Invoke((MethodInvoker)delegate
        {
            ((Label)lbltotalcount[0]).Text =     (Convert.ToInt32(((Label)lbltotalcount[0]).Text) + NumOfMatch).ToString();
        });    

        var obj = tableLayoutPanel1.Controls.Find("dgv_" + GridId, true);

       ((DataGridView)obj[0]).SelectionChanged += new EventHandler(My_SelectionChanged);


        ((DataGridView)obj[0]).Invoke((MethodInvoker)delegate
        {
            string[] row = new string[] { Word, txturl.Text, Url, NumOfMatch.ToString() };

            DataGridViewRow dgvRow = new DataGridViewRow();
            DataGridViewCell dgvCell;

            dgvCell = new DataGridViewTextBoxCell();                
            dgvCell.Value = Word;
            dgvRow.Cells.Add(dgvCell);                

            dgvCell = new DataGridViewTextBoxCell();
            dgvCell.Value = txturl.Text;
            dgvRow.Cells.Add(dgvCell);

            dgvCell = new DataGridViewTextBoxCell();
            dgvCell.Value = Url;
            dgvRow.Cells.Add(dgvCell);

            dgvCell = new DataGridViewTextBoxCell();
            dgvCell.Value = NumOfMatch.ToString();
            dgvRow.Cells.Add(dgvCell);                                              

            ((DataGridView)obj[0]).Rows.Add(dgvRow);
            ((DataGridView)obj[0]).Refresh();
            ((DataGridView)obj[0]).Update();
          var index = ((DataGridView) obj[0]).RowCount;
          ((DataGridView) obj[0]).SelectedRows[index - 1].Selected = true;
        });  
  }

   void My_SelectionChanged(object sender, EventArgs e)
    {
      // bla bla ...

    }
于 2012-07-01T02:03:14.907 に答える