Добавление новой строки в DatagridView - Visual Basic .NET (63875)
Формулировка задачи:
День добрый. Была уже такая тема от Zaharius, однако повис в воздухе такой вопрос:
И вопрос этот очень насущный ибо я мониторю СОМ порт и добавляю данные в таблицу построчно, однако новые строки не появляются и это не хорошо.
Вопрос как у Zaharius. Как с имитировать ручной ввод символов в ячейку?
Неужели нельзя никак программно вызвать появление новой пустой строки в связанном датагриде? Иными словами, как симитировать ручной ввод символов в ячейку?
Заранее спасибо
Решение задачи: «Добавление новой строки в DatagridView»
textual
Листинг программы
Public Class Form1 'Событие, возникающее в другом потоке Private Event ThreadEvent As EventHandler Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'Создаём поток Dim t As New Thread(AddressOf ThreadProcedure) 'Привязываемся к событию. AddHandler ThreadEvent, AddressOf AddRow 'Запускаем поток t.Start() For i As Integer = 0 To 10 'Вызов события из одного с контролом потока RaiseEvent ThreadEvent(Me, New EventArgs()) Thread.Sleep(200) Application.DoEvents() Next End Sub 'Делегат, который должен выполниться Dim _act As New Action(Of Integer)(Sub(i) Dim n = DataGridView1.Rows.Add() DataGridView1(0, n).Value = i End Sub) 'Метод, вызываемый в событии Private Sub AddRow(sender As Object, e As EventArgs) 'Нужно ли вызывать делегат для другого потока? If DataGridView1.InvokeRequired Then 'Вызов делегата DataGridView1.Invoke(_act, 1) Else 'Вызов делегата, если метод AddRow вызван из того же потока, что и контрол _act(0) End If End Sub 'Метод, выполняемый в другом потоке 'Каждые полсекунды вызываем некое событие Private Sub ThreadProcedure() For i As Integer = 0 To 10 RaiseEvent ThreadEvent(Me, New EventArgs()) Thread.Sleep(500) Next End Sub End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д