首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修复System.FormatException:“输入字符串的格式不正确”

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

Stack Overflow用户
提问于 2019-08-05 21:39:07
回答 1查看 497关注 0票数 0

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

我试着在google甚至特定的站点上搜索代码问题。毫无办法。

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

代码语言:javascript
运行
复制
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 (也是工具条组合按钮)

代码语言:javascript
运行
复制
 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,基本上这两种语言都适用。

EN

Stack Overflow用户

发布于 2019-08-05 21:59:02

不需要在tscFontFamily.Text上调用ToString,因为文本属性返回一个字符串;您实际上是说从这个字符串值返回一个字符串值。

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

下面是一个将更改应用到代码的示例:

代码语言:javascript
运行
复制
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
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57359801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档