Как скопировать данные по строкам из одной сетки в другую, которая находится в другой форме, двойным щелчком по строке C# WinForm - PullRequest
0 голосов
/ 09 мая 2020

Как я могу перенести запись (строка за строкой) 1-го вида сетки во 2-й вид сетки, который находится в отдельной форме. Двойным щелчком по строке 1-го .... C# WinForm

Изображение 1 https://i.stack.imgur.com/O62RD.png

Изображение 2 https://i.stack.imgur.com/CcLqZ.png

Изображение 3 https://i.stack.imgur.com/5LEqg.png

Ответы [ 2 ]

0 голосов
/ 11 мая 2020

Вы можете получить данные выбранной строки через событие «CellDoubleClick».

А затем используйте Application.OpenForms Property, чтобы получить экземпляр Form2.

Для доступа к dgv2 что в Form2 вы можете определить свойство для его достижения.

Form2.cs:

// Define a property to access dgv2
public DataGridView DGV
{
    get { return dataGridView2; }
    set { dataGridView2 = value; }
}

Ниже приведена простая демонстрация, к которой вы можете обратиться.

Form1 .cs: ​​

Form2 form2;

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    // Get the instance of Form2
    form2 = (Form2)Application.OpenForms["Form2"];

    // Save the selected row's items into a list
    List<string> items = new List<string>();
    for (int i = 0; i < dataGridView1.ColumnCount; i++)
    {
        items.Add(dataGridView1.Rows[e.RowIndex].Cells[i].Value.ToString());
    }

    // Add new data to dgv2
    DataGridViewRow dr = new DataGridViewRow();
    dr.CreateCells(form2.DGV);
    dr.Cells[0].Value = items[0];
    dr.Cells[1].Value = items[1];
    // call the property "DGV" in Form2.cs
    form2.DGV.Rows.Add(dr);
}

private void Form1_Load(object sender, EventArgs e)
{
    // Add some test data into dgv1
    DataTable dt = new DataTable();
    dt.Columns.Add(new DataColumn()
    { ColumnName = "species", DataType = typeof(string) });
    dt.Columns.Add(new DataColumn()
    { ColumnName = "weight", DataType = typeof(string) });
    dt.Rows.Add("Cat", "12");
    dt.Rows.Add("Mouse", "3");
    dt.Rows.Add( "Pig", "308");
    dt.Rows.Add( "Elephant", "1652");
    dataGridView1.DataSource = dt;
}

// Open form2
private void btOpenForm2_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Show();
}
0 голосов
/ 10 мая 2020

вы можете сделать это с помощью делегата и событий, вам нужно передать весь выбранный объект строки при двойном щелчке строки

...