簡體   English   中英

如何修復System.FormatException:'輸入字符串的格式不正確'

[英]How to fix System.FormatException: 'Input string was not in a correct format'

我正在嘗試為RichTextBox更改VB.NET中的字體系列

我曾嘗試通過Google甚至特定網站搜索代碼問題。 沒用。

這些是FontFamily更改的代碼(這是一個工具欄組合按鈕)

Private Sub TscFontFamily_TextChanged(sender As Object, e As EventArgs) Handles tscFontFamily.TextChanged
        rtbContent.SelectionFont = New Font(Convert.ToString(tscFontFamily.Text), Convert.ToInt32(tscFontSize.Text))
    End Sub

和FontSize(也是工具條組合按鈕)

 Private Sub tscFontSize_TextChanged(sender As Object, e As EventArgs) Handles tscFontSize.TextChanged
        Dim newSize As Single = Convert.ToSingle(tscFontSize.Text)
        rtbContent.SelectionFont = New Font(rtbContent.SelectionFont.FontFamily, newSize)
    End Sub

我希望這會成功,因為這很有意義,對吧? 但是它說“輸入字符串的格式不正確”,如果我刪除了Convert.ToString和其他轉換代碼,它會說“從字符串“”轉換為類型“ Single”是無效的”。

同樣值得一提的是,我實際上已經嘗試過Convert.ToString和Convert.ToDouble,並且基本上都嘗試了。

不需要在tscFontFamily.Text上調用ToString,因為TextBox的Text屬性返回一個String。 您實際上是在說從此String值返回String值。

Convert.ToInt32是一種將String值轉換為Int32(又稱整數)值的快速而骯臟的方法。 如果您依賴用戶的輸入,則應該幾乎總是使用Int32.TryParse。 此方法根據輸入的轉換是否成功,然后傳遞的第二個參數是參考變量,返回一個布爾值,因此,如果方法的結果為True,則第二個參數包含轉換后的值。 但是,看起來您想要的是Single值,在這種情況下,您實際上會使用Single.TryParse。

這是將更改應用於代碼的示例:

Private Sub tscFontSize_TextChanged(sender As Object, e As EventArgs) Handles tscFontSize.TextChanged
    Dim newSize As Single
    If Single.TryParse(tscFontSize.Text, newSize) Then
        rtbContent.SelectionFont = New Font(rtbContent.SelectionFont.FontFamily, newSize)
    End If
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM