如何修复System.FormatException:'输入字符串的格式不正确'

时间:2019-08-05 13:39:06

标签: vb.net

我试图在VB.NET中为RichTextBox更改字体系列

我尝试通过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以及基本上两者都适用的事实。

1 个答案:

答案 0 :(得分:2)

不需要在tscFontFamily.Text上调用ToString,因为TextBox的Text属性返回一个String;您实际上是在说要从此String值返回一个String值。

Convert.ToInt32是一种将String值转换为Int32(aka整数)值的快速而肮脏的方法。如果您依赖用户的输入,则应该几乎总是使用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