Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как скопировать содержимое одного DataGridview в другую форму DataGridview

Автор вопроса: Mahjoubi houssemОтветов: 1

Как скопировать содержимое в одном DataGridview в другое DataGridview, которое находится в другой форме

For i As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
    With DataGridView1.Rows(i)
        DataGridView2.Rows.Insert(0, .Cells(0).Value, .Cells(1).Value, .Cells(2).Value, .Cells(3).Value)
    End With
Next
  • С какой проблемой вы столкнулись? Также вы заполняете первый DataGridView из источника, если это так, вам не нужно вручную добавлять строки из первого во второй. Есть много способов справиться с этим, но в настоящее время в сообщении отсутствует информация, пожалуйста, обновите, чтобы мы могли помочь вам в дальнейшем. zaggler 15.04.2019
  • Я читаю текстовый файл в сетке данных и проверяю, существуют ли эти данные в базе данных или нет после тестирования. Я хочу скопировать их в другую форму с представлением данных, где я добавил другие столбцы для обновления базы данных из нее, проблема, я понятия не имею, как он будет захватывать строки из формы и отправлять их в другое представление данных в форме1 Mahjoubi houssem 15.04.2019
  • Выдает ли ваш код выше какое-либо исключение? или что вы ожидаете получить и не получаете? preciousbetine 15.04.2019
  • ИМХО, у вас должен быть класс для работы, изучите создание классов для хранения ваших данных из текстового файла, который вы читаете. Затем эти данные можно отображать/использовать/распространять/обновлять в любом месте, где вам это нужно. Во-первых, мы не знаем, как выглядит этот текстовый файл, как вы проверяете БД, чтобы увидеть, существуют ли эти данные...? Здесь много неопределенности, о которой мы не знаем, чтобы сформировать хороший ответ, чтобы помочь вам. Конечно, мы могли бы выбросить ответ, но это действительно решит вашу проблему? zaggler 15.04.2019
  • я понятия не имею, как он будет захватывать строки из формы и отправлять их в другое представление сетки данных в форме 1. Вам нужна ссылка на другую форму. Какие формы участвуют? Какие формы показывают какие? Подробности, мой друг... Idle_Mind 15.04.2019
  • мой код копирует данные из сетки данных в другую в той же форме, но я хочу использовать другую сетку данных в другой форме, поэтому я понятия не имею, как это работает, только у меня есть команда для получения значения из сетки данных, и я могу перейти в другую форму (DataGridView1. CurrentRow.Cells(0).Value.ToString) Mahjoubi houssem 15.04.2019

datagridview

Ответы

Ответ 1 · djv

См. этот ответ, который уже касается копирования из одного DataGridView в другой.

Я взял код и преобразовал его в vb.net с помощью онлайн-конвертера.

Чтобы этот код работал, создайте новый проект с двумя формами (Form1, Form2), в каждой из которых будет DataGridView (обе названы DataGridView1). Поместите кнопку на форму Form1 (Button1). Затем вставьте код в соответствующий файл кода каждой формы.

Форма1

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        DataGridView1.DataSource = {"A", "B", "C"}.Select(Function(s) New With {.Value = s}).ToList()
        Form2.Show()
    End Sub
    Public Sub Foo()
        Form2.Bar(DataGridView1)
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Foo()
    End Sub
End Class

Форма2

Public Class Form2
    Public Sub Bar(dgv_org As DataGridView)
        Dim dgv_copy = DataGridView1
        Try
            If dgv_copy.Columns.Count = 0 Then

                For Each dgvc As DataGridViewColumn In dgv_org.Columns
                    dgv_copy.Columns.Add(TryCast(dgvc.Clone(), DataGridViewColumn))
                Next
            End If
            Dim row As DataGridViewRow = New DataGridViewRow()
            For i As Integer = 0 To dgv_org.Rows.Count - 1
                row = CType(dgv_org.Rows(i).Clone(), DataGridViewRow)
                Dim intColIndex As Integer = 0
                For Each cell As DataGridViewCell In dgv_org.Rows(i).Cells
                    row.Cells(intColIndex).Value = cell.Value
                    intColIndex += 1
                Next
                dgv_copy.Rows.Add(row)
            Next
            dgv_copy.AllowUserToAddRows = False
            dgv_copy.Refresh()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы