how to copy/transfer values from form2 datagridview to form1 datagridview in C#..?

后端 未结 4 1053
孤街浪徒
孤街浪徒 2021-01-25 03:39

can anyone do help..?

i really need help on this, here i have two forms [form1 & form2]. I have created datagridview(DGV) in each forms. Now i need to transfer/copy

4条回答
  •  不要未来只要你来
    2021-01-25 04:19

    You should use some kind of event for this purpose:

    //the Form1 class
    public partial class Form1 : Form {
      Form2 f2 = new Form2();  
      public Form1(){
        InitializeComponent();
        f2.TransferSelectedRows += (s,e) => {
          if (dataGridView1.RowCount > 0) {
             foreach(DataGridViewRow row in dataGridView1.SelectedRows){
               //add the selected row to the receiver grid
               e.ReceiverGrid.Rows.Add(row.Cells.OfType()
                                              .Select(cell=>cell.Value).ToArray());
               //remove the selected row
               dataGridView1.Rows.Remove(row); 
             }
             e.HasRows = true;
          } else {
            e.HasRows = false;
          }
        };
      }     
    }
    //Form2 class
    public partial class Form2 : Form { 
      public Form2() {
        InitializeComponent();       
      }
      public class TransferSelectedRowsEventArgs : EventArgs {
        public DataGridView ReceiverGrid {get; private set;}
        public bool HasRows {get;set;}
        public TransferSelectedRowsEventArgs(DataGridView receiver){
           ReceiverGrid = receiver;
        }
      }
      public delegate void TransferSelectedRowsEventHandler(object sender, TransferSelectedRowsEventArgs e);
      public event TransferSelectedRowsEventHandler TransferSelectedRows;
      protected virtual void OnTransferSelectedRows(TransferSelectedRowsEventArgs e){
        TransferSelectedRowsEventHandler handler = TransferSelectedRows;
        if(handler != null) handler(this, e);
      }
      //Click event handler for button1
      private void button1_Click(object sender, EventArgs e){
        var transfer = new TransferSelectedRowsEventArgs(dataGridView1);
        OnTransferSelectedRows(transfer);
        if(!transfer.HasRows){
           MessageBox.Show("There is no data to export, please verify..!", "Error", 
                            MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
      }
    }
    

    NOTE: The code I posted above is not complete, some members or code of your own should be added. You should also consider using DataSource for your Grid, that's is how we deal with DataGridView in real projects.

提交回复
热议问题