Member 13706660 Ответов: 1

Как Редактировать таблицу динамически начиная с первой строки и всего ее столбца и второй строки при нажатии кнопки


Private Sub sendbutton_Click(sender As Object, e As EventArgs) Handles sendbutton.Click
        TabPage1.Hide()
        TabPage3.Show()
        Dim FileNum As Integer = FreeFile()
        Dim tempL As String
        Dim receipt As String
        Dim check As String = " "
        Dim test As String = "Processing..."
        Dim see As String = "Successful"
        TableLayoutPanel1.RowStyles.Add(New RowStyle(SizeType.AutoSize))
        Try
            FileOpen(FileNum, TextBox1.Text, OpenMode.Input)
            Do Until EOF(FileNum)
                Dim ctrl As New TextBox
                Dim sign As New Label
                Dim txt As New TextBox
                TableLayoutPanel2.RowCount += 1
                TableLayoutPanel2.Controls.Add(ctrl, 0, TableLayoutPanel2.RowCount - 1)
                TableLayoutPanel2.Controls.Add(txt, 1, TableLayoutPanel2.RowCount - 1)
                TableLayoutPanel2.Controls.Add(sign, 2, TableLayoutPanel2.RowCount - 1)
                tempL = LineInput(FileNum)
                SerialPort1.WriteLine(tempL)

                Do
                    If (check.Equals(" ")) Then
                        Dim i As Integer = 0
                        ctrl.BorderStyle = BorderStyle.None
                        ctrl.ReadOnly = True
                        ctrl.Size = New System.Drawing.Size(140, 20)
                        ctrl.BackColor = SystemColors.Window
                        ctrl.Visible = True
                        While (i < tempL.Length)
                            Timer1.Start()
                            ctrl.Text += tempL.Chars(i)
                            i = i + 1

                        End While
                        check = "1"
                        Exit Do
                    End If
                Loop
                Do
                    If (check.Equals("1")) Then
                        Dim i As Integer = 0
                        txt.ForeColor = Color.Red
                        txt.BorderStyle = BorderStyle.None
                        txt.ReadOnly = True
                        txt.BackColor = SystemColors.Window
                        txt.Visible = True
                        While (i < test.Length)
                            Timer1.Start()
                            txt.Text += test.Chars(i)
                            i = i + 1

                        End While
                        check = "2"
                        Exit Do
                    End If
                Loop


                Do
                    System.Threading.Thread.Sleep(2000)
                    receipt = SerialPort1.ReadExisting()
                    RichTextBox2.Text = receipt

                    If (receipt.Equals("OK")) Then
                        Dim i As Integer = 0
                        RichTextBox2.Text = receipt
                        txt.Text = ""
                        txt.ForeColor = Color.Green
                        txt.BorderStyle = BorderStyle.None
                        txt.BackColor = SystemColors.Window
                        While (i < see.Length)
                            Timer1.Start()
                            txt.Text += see.Chars(i)
                            i = i + 1

                        End While


                        If check.Equals("2") Then
                                sign.ForeColor = Color.Green
                                sign.Text = ChrW(&H2713)
                                check = " "
                            End If


                        Exit Do
                    End If

                Loop
                System.Threading.Thread.Sleep(2000)
            Loop
            FileClose(FileNum)

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try


    End Sub


Что я уже пробовал:

я попытался поставить таймер во время редактирования текста в элементах управления, чтобы отобразить текст в режиме машинописи, но это также, похоже, не работает, и я также поставил контрольную строку только для того, чтобы проверить, выполнил ли он свой предыдущий текст или нет... так что получить col by col редактирование строки, а затем другое редактирование строки в таблице

1 Ответов

Рейтинг:
0

Maciej Los

Предположим, что вы хотите читать текстовый файл строка за строкой...

Я бы предложил использовать Файл.Метод ReadAllLines() [^] чтобы получить все строки из текстового файла.
Как им пользоваться?
1. Объявить 2 переменные в модуле формы form1 (см. документацию MSDN области в VB):
- первый для удержания текущего номера строки:
- во-вторых, чтобы сохранить имя файла:

Dim currLine As Integer = 0
Dim sFileName As String = String.Empty

2. Добавить кнопку (назовите ее: BtnReadFile) и внутри Click событие помещено ниже кода:
sFileName = Me.TextBox1.Text

3. Добавьте функцию для чтения одной строки из текстового файла
Public Function ReadLine(sPath As String, lineNo As Integer)  AS String 
	Return File.ReadAllLines(sPath).Skip(lineNo-1).Take(1).SingleOrDefault()
End Function

4. Добавить кнопку (назовите ее: BtnNextLine) и внутри Click событие помещено ниже кода:
'increase line no
currLine += 1 
'read single line
Dim singleLine = ReadLine(sFileName, currLine)
'
'code to proccess data here
'


важное Примечание:
Этот пример не является идеальным, но демонстрирует, как читать текстовый файл строка за строкой.
ДЕЛАТЬ:
- добавить обработку ошибок
- улучшите код до
  + получить количество строк в файле
  + чтение предыдущей строки из текстового файла
  + запретить пользователю заходить в строку меньше 1 или выше строк.Рассчитывать.

Для получения более подробной информации, пожалуйста, смотрите:
Область действия в Visual Basic | Microsoft Docs[^]
Как управлять областью действия переменной (Visual Basic) | Microsoft Docs[^]
Область действия переменных и методов в Microsoft .NET[^]