Строки в десятичные числа Невозможно преобразовать - PullRequest
0 голосов
/ 28 ноября 2018

Пожалуйста, обратите внимание, что я рассмотрел другое решение, и несколько форумов, и ни один из них не помог мне, все они относятся к одной строке.Теперь, когда мы это выяснили, смотрите проблему ниже: я заполняю TEXTBOX STRING DATA.Я форматирую данные из текстового поля и подключаю к COMBOBOX.Моя проблема не имеет значения, что я пытаюсь, она не будет десятичной в .2 - или больше.Это все еще заполняет это как строка (45.2323685).Однако, когда я бросаю MsgBox, чтобы проверить решение, оно работает .... Решения, которые я пробовал.«Формат», «CDbl», «Prase», «Math» (после CDbl), «FormatingString», «FormatingEnabled».По какой-то причине никто не будет работать при заселении.Я предполагаю, что это из-за потока данных, так как "ComboBox.Items.Add (text) заполняется как строка и отказывается заполнять как десятичные числа ..... Но я могу ошибаться. Код с Примечаниями ниже:

Dim countLines As Integer = TEXTBOX.Lines().Count
Dim DATA As String
If countLines > 0 Then
For x = 0 To countLines - 1
DATA = TEXTBOX.Lines(x).ToString
'MsgBox(FormatNumber(CDbl(DATA), 3)) - This works independent
   'If I try to convert DATA to DECIMAL or DOUBLE before adding to COMBOBOX 
    it throws an error invalid conversion "String to Double, String To 
    Decimal" Even if I dim DATA to something else and try to add that 
    instead
COMBOBOX.Items.Add(DATA)
Next
end if

Пожалуйста, сообщите, если требуется дополнительная информация. Спасибо!

1 Ответ

0 голосов
/ 11 июня 2019

Вы можете избежать ошибок, используя .TryParse.Первый пример добавит в ноль к комбинированному списку, если анализ не удастся.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If TextBox1.Text = "" Then
        MessageBox.Show("Text Box is empty")
        Return
    End If

    For Each line In TextBox1.Lines
        Dim d As Double
        Double.TryParse(line, d)
        ComboBox1.Items.Add(d)
    Next
End Sub

Этот бит кода просто пропустит строку в текстовом поле, которая не сможет выполнить синтаксический анализ, и продолжит добавлять все пропущенные строки.

    For Each line In TextBox1.Lines
        Dim d As Double
        If Double.TryParse(line, d) Then
            ComboBox1.Items.Add(d)
        End If
    Next
...