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

Vb.net 如何修复System.FormatException:';输入字符串的格式不正确';,vb.net,Vb.net,我正在尝试更改VB.NET中RichTextBox的字体系列 我曾尝试在谷歌甚至特定网站上搜索代码问题。什么都不管用 这些是FontFamily更改的代码(它是一个工具条组合按钮) 和FontSize(也是一个工具条组合按钮) 我认为这是可行的,因为这是有道理的,对吧?但它会说“输入字符串的格式不正确”,如果我删除Convert.ToString和其他转换代码,它会说“从字符串转换为类型‘Single’无效” 对于mentiion来说,事实上我已经尝试了Convert.ToString和Conv

我正在尝试更改VB.NET中RichTextBox的字体系列

我曾尝试在谷歌甚至特定网站上搜索代码问题。什么都不管用

这些是FontFamily更改的代码(它是一个工具条组合按钮)

和FontSize(也是一个工具条组合按钮)

我认为这是可行的,因为这是有道理的,对吧?但它会说“输入字符串的格式不正确”,如果我删除Convert.ToString和其他转换代码,它会说“从字符串转换为类型‘Single’无效”


对于mentiion来说,事实上我已经尝试了Convert.ToString和Convert.ToDouble,基本上这两种方法都是如此。

没有必要在
tscFontFamily.Text上调用ToString,因为TextBox的Text属性返回一个字符串;实际上是说从这个字符串值返回一个字符串值

Convert.ToInt32是一种快速而肮脏的将字符串值转换为Int32(也称为整数)值的方法。如果您依赖于用户的输入,那么几乎应该始终使用Int32.TryParse。此方法根据输入的转换是否成功以及传递的第二个参数是否为参考变量返回布尔值。因此,如果方法的结果为真,则第二个参数包含转换后的值。但是,看起来您需要一个值,在这种情况下,您实际使用的是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

无需在
tscFontFamily.Text上调用ToString,因为TextBox的Text属性返回字符串;实际上是说从这个字符串值返回一个字符串值

Convert.ToInt32是一种快速而肮脏的将字符串值转换为Int32(也称为整数)值的方法。如果您依赖于用户的输入,那么几乎应该始终使用Int32.TryParse。此方法根据输入的转换是否成功以及传递的第二个参数是否为参考变量返回布尔值。因此,如果方法的结果为真,则第二个参数包含转换后的值。但是,看起来您需要一个值,在这种情况下,您实际使用的是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

您是无意中添加了标记,还是正在寻找VBA和VB.Net的答案,因为我在这里没有看到任何VBA?如果出现此错误,则tscFontSize.Text的内容无法转换为整数、双精度或单精度。那个文本框的内容是什么?请记住,您键入的每个字符都将调用TextChanged事件。即使您尚未完成输入textWell Nacorid是的,我很抱歉,我认为vba和vb.net是同一件事。fontsize文本框的内容或值为“11”或“8”,或者您知道字体大小为什么不使用字体对话框?您是无意中添加了标记,还是正在寻找VBA和VB.Net的答案,因为我在这里没有看到任何VBA?如果出现此错误,则tscFontSize.Text的内容无法转换为整数、双精度或单精度。那个文本框的内容是什么?请记住,您键入的每个字符都将调用TextChanged事件。即使您尚未完成输入textWell Nacorid是的,我很抱歉,我认为vba和vb.net是同一件事。fontsize文本框的内容或值为“11”或“8”,或者您知道字体大小为什么不使用字体对话框?好的,谢谢,但遗憾的是,代码不起作用,在我将代码添加到tscFontSize子模块后,我仍然拥有整个“rtbContent.SelectionFont=新字体(tscFontFamily.Text,tscFontSize.Text)”,我是否必须将此tryparse代码添加到FrontFamily代码中?如果是的话,我应该使用String吗?@JamieEngel Yes和no。是的,将.TryParse代码添加到另一个子项中以获得字体大小。不,.Text属性是一个字符串,不需要转换。好的,谢谢,但遗憾的是代码不起作用,在我将代码添加到tscFontSize子对象后,我仍然拥有完整的“rtbContent.SelectionFont=New Font(tscFontFamily.Text,tscFontSize.Text)”,我是否必须将此tryparse代码添加到FrontFamily代码中?如果是的话,我应该使用String吗?@JamieEngel Yes和no。是的,将.TryParse代码添加到另一个子项中以获得字体大小。否,.Text属性是字符串,不需要转换。
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