Преобразовать строку в целое число - PullRequest
0 голосов
/ 18 февраля 2019

У меня проблемы с преобразованием строки в целое число в VB.net

Я пробовал следующее, но это не совсем работает:

Код:

1:

Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
    My.Settings.ydelay = Convert.ToInt32(TextBox3.Text)
End Sub

2:

My.Settings.ydelay = Textbox3.Text
My.Settings.ydelay = Convert.ToInt32(Textbox3.Text)

3:

My.Settings.ydelay = Convert.ToInt32(Textbox.3Text)
My.Settings.ydelay = Textbox3.Text

4:

My.Settings.ydelay = Textbox3.Text
Convert.ToInt32(Textbox3.Text, My.Settings.ydelay)

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

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Вы хотите преобразовать строку в целое число.Убедитесь, что вы вводите только число.

- используйте этот код при нажатии на текстовое поле

  If (e.KeyChar <= ChrW(47)) Or (e.KeyChar >= ChrW(58)) Then
            If e.KeyChar = vbBack Then
            Else
                e.KeyChar = ChrW(0)
            End If
        Else
        End If
        If sender.text = "" Then
            sender.text = 0
        End If

, после этого я просто использую Cint(textboxt.text)

0 голосов
/ 18 февраля 2019

Во-первых, убедитесь, что для параметра ydelay в свойствах проекта задано значение Scope User, поскольку область применения только для чтения.Затем дважды проверьте тип данных Integer.

Вы не увидите изменений в свойствах проекта.Они хранятся в User.config.Расположение: C: \ Users \ [Имя пользователя] \ AppData \ Local \ TestCode2 \ TestCode2.exe_Url_aq2yohztn2r23tmvf0pbczm25mx0yx11 \ 1.0.0.0 для моего проекта с именем TestCode2.

Lo and behold ...

        <setting name="ydelay" serializeAs="String">
            <value>1</value>
        </setting>

Если вы перейдете на другой компьютер, настройка ydelay будет исходным значением, как показано в Свойствах проекта.Это имеет смысл, потому что это настройка «Пользователь», и каждый пользователь будет иметь собственную настройку.

Что касается кода.Мне не нравится событие TextChanged.Он срабатывает каждый раз при нажатии клавиши;это включает в себя Backspace.Может быть, Leave будет работать для вас.

.TryParse - хороший способ проверить ввод.Он выполняет двойную функцию, устанавливая переменную и возвращая логическое значение, чтобы оно вписывалось прямо в оператор If.

Private Sub TextBox16_Leave(sender As Object, e As EventArgs) Handles TextBox16.Leave
    Dim i As Integer
    If Integer.TryParse(TextBox16.Text, i) Then
        My.Settings.ydelay = i
    Else
        MessageBox.Show("Please enter a number in TextBox 16")
        TextBox16.Select() 'If you want to insist
    End If
End Sub
...