1

私はまだC#を学んでいるので、誰かが私を助けてくれることを願っています.

datagridview1 からドラッグ アンド ドロップすると2 つのDataGridViewオブジェクトがありますが、datagridview1 から 2 に再度ドラッグすると、データが最初の列の値を上書きします。繰り返しのたびに、datagridview1 からの列名で 1 つの追加の空白列が作成されますが、値はそれぞれの列に複製されません。すべての値は最初の列になります。

private void dataGridView1_DragDrop(object sender, DragEventArgs e)
    {

        List<int> selectedColumns = new List<int>();
        // The mouse locations are relative to the screen, so they must be 
        // converted to client coordinates.
        Point clientPoint = dataGridView1.PointToClient(new Point(e.X, e.Y));
        dataGridView1.DataBindings.Clear();
        // Get the row index of the item the mouse is below. 
        rowIndexOfItemUnderMouseToDrop = dataGridView1.HitTest(clientPoint.X, clientPoint.Y).RowIndex;


        // If the drag operation was a move then remove and insert the row.
        if (e.Effect == DragDropEffects.Move)
        {
            DataGridViewRow rowToMove = e.Data.GetData(typeof(DataGridViewRow)) as DataGridViewRow;

            listBox1.Items.Add(rowIndexOfItemUnderMouseToDrop.ToString());
            listBox1.Items.Add(columIndexFromMouseDown.ToString());

           // dataGridView1.Rows.RemoveAt(rowIndexFromMouseDown);

            foreach (DataGridViewColumn col in dataGridView1.Columns)
            {
                if (col.Index == columIndexFromMouseDown)
                {
                    dataGridView2.Columns.Add((DataGridViewColumn)col.Clone());
                    selectedColumns.Add(columIndexFromMouseDown);

                }
            }

            int rowIndex = 0;

            foreach (DataGridViewRow row in dataGridView1.Rows)
            {

                dataGridView2.Rows.Add();

                for (int i = 0; i < selectedColumns.Count; i++)
                {
                    dataGridView2.Rows[rowIndex].Cells[i].Value = row.Cells[selectedColumns[i]].Value;
                }

                rowIndex++;
            }

         //   dataGridView1.Rows.Insert(rowIndexOfItemUnderMouseToDrop, rowToMove);
          }

      // dataGridView1.DataSource = DataSetRecords.Tables[0];
    }

添付はコードです。

何か案は?前もって感謝します。

4

0 に答える 0