shaileshshinde Ответов: 1

Номера строк для управления текстовым полем


нужны номера строк для управления текстовым полем

номер строки не увеличивается после 34. код ломается.

ниже приведена ссылка на файл проектного решения:

номер строки textbox.zip - Google Диск[^]

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

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        SyncLineNumbers()
        Dim newHeight As Integer = ListBox1.ItemHeight * ListBox1.Items.Count
        If newHeight > Panel1.Height Then
            ListBox1.Height = newHeight
            TextBox1.Height = newHeight
        End If
        ListBox1.SelectedIndex = TextBox1.GetLineFromCharIndex(TextBox1.SelectionStart)
    End Sub

    Private Sub SyncLineNumbers()
        If TextBox1.Lines.Count <> ListBox1.Items.Count Then
            Do While TextBox1.Lines.Count > ListBox1.Items.Count
                ListBox1.Items.Add((ListBox1.Items.Count + 1).ToString)
            Loop
            Do While TextBox1.Lines.Count < ListBox1.Items.Count
                ListBox1.Items.RemoveAt(ListBox1.Items.Count - 1)
            Loop
        End If
    End Sub

    Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
        ListBox1.SelectedIndex = TextBox1.GetLineFromCharIndex(TextBox1.SelectionStart)
        If ListBox1.Items.Count > Panel1.Height \ ListBox1.ItemHeight Then
            Panel1.VerticalScroll.Value = ListBox1.ItemHeight * ListBox1.SelectedIndex
        End If

    End Sub

    Private Sub TextBox1_Click(sender As Object, e As EventArgs) Handles TextBox1.Click
        ListBox1.SelectedIndex = TextBox1.GetLineFromCharIndex(TextBox1.SelectionStart)
    End Sub

Richard MacCutchan

Где происходит ошибка и что вы подразумеваете под этим - код ломается"?

shaileshshinde

Ошибка возникает при :

Panel1.VerticalScroll.Значение = Список Listbox1.Помощью Itemheight * Список Listbox1.Свойства selectedIndex


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

Maciej Los

Воспользуйся Reply виджет, чтобы быть уверенным, что система уведомит о вашем ответе.
Вы найдете его справа от имени участника/Ника.

shaileshshinde

Ошибка возникает при :

Panel1.VerticalScroll.Значение = Список Listbox1.Помощью Itemheight * Список Listbox1.Свойства selectedIndex


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

Richard MacCutchan

Итак, есть хорошее место, чтобы поставить точку останова и посмотреть, почему эти цифры вызывают проблему. Возможно, панель недостаточно велика, чтобы вместить такое значение прокрутки.

shaileshshinde

поскольку я запутался в этой части.не могли бы вы помочь мне с решением кода.не могли бы вы сослаться на мой файл решения, который я прикрепил здесь.

Richard MacCutchan

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

shaileshshinde

только для этой цели я прикрепил сюда свой файл решения google drive link, чтобы все знали, где именно находится проблема.

можете ли вы скачать этот файл решения и попытаться устранить ошибку?

Richard MacCutchan

Нет, этот сайт работает не так. Вы несете ответственность за сбор необходимых сведений и размещение их в вопросе. Люди здесь постараются вам помочь. Но помните, что мы все делаем это в свое время, и без каких-либо затрат для вас.

1 Ответов

Рейтинг:
2

OriginalGriff

Компиляция не означает, что ваш код верен! :смеяться:
Подумайте о процессе разработки как о написании электронного письма: успешная компиляция означает, что вы написали письмо на правильном языке - например, на английском, а не на немецком, - а не то, что письмо содержало сообщение, которое вы хотели отправить.

Итак, теперь вы входите во вторую стадию разработки (на самом деле это четвертая или пятая, но вы перейдете к более ранним стадиям позже): тестирование и отладка.

Начните с рассмотрения того, что он делает, и как это отличается от того, что вы хотели. Это важно, потому что это дает вам информацию о том, почему он это делает. Например, если программа предназначена для того, чтобы позволить пользователю ввести число, а он удваивает его и печатает ответ, то если ввод / вывод был таким:

Input   Expected output    Actual output
  1            2                 1
  2            4                 4
  3            6                 9
  4            8                16
Тогда совершенно очевидно, что проблема заключается в бите, который удваивает его - он не прибавляет себя к себе или умножает его на 2, он умножает его на себя и возвращает квадрат входного сигнала.
Таким образом, вы можете посмотреть на код, и очевидно, что он находится где-то здесь:
int Double(int value)
   {
   return value * value;
   }

Как только у вас появится идея, что может пойти не так, начните использовать отладчик, чтобы выяснить, почему. Поместите точку останова в первую строку метода и запустите приложение. Когда он достигнет точки останова, отладчик остановится и передаст управление вам. Теперь вы можете запускать свой код построчно (так называемый "одноступенчатый") и просматривать (или даже изменять) содержимое переменных по мере необходимости (черт возьми, вы даже можете изменить код и повторить попытку, если вам это нужно).
Подумайте о том, что должна делать каждая строка кода перед ее выполнением, и сравните это с тем, что она действительно делала, когда вы использовали кнопку "шаг вперед" для выполнения каждой строки по очереди. Он сделал то, что вы ожидали? Если да, то переходите к следующей строке.
Если нет, то почему? Чем это отличается?
Надеюсь, это поможет вам определить, в какой части этого кода есть проблема и в чем она заключается.
Это навык, и его стоит развивать, поскольку он помогает вам как в реальном мире, так и в развитии. И, как и все навыки, он только улучшается при использовании!