【问题标题】:FormatException was Unhandled while converting string to Int32将字符串转换为 Int32 时未处理 FormatException
【发布时间】:2013-08-22 23:07:00
【问题描述】:

所以我昨天写了this question。我仍在使用 UPDATE 下的解决方案,但由于某种原因,我现在收到 FormatException was Unhandled 错误。在错误下,编译器窗口显示Input string was not in a correct format。为什么会发生这种情况?

当我查看错误时,我认为使用Int32.TryParse 可能会更好,就像在this link 中一样。但这几乎是一样的交易。

这是我目前拥有的......

//Initializing a parent TreeView Item
TreeViewItem parentItem = (TreeViewItem)SelectedItem.Parent;

//This is the call to getNumber that I am having trouble with.
//It is located in an if statement, but I didn't bother to write out the
//whole statement because I didn't want to add surplus code
int curNumber = getNumber(parentItem.Header.ToString());

//Gets the number contained in a Node's header
public static int getNumber(string parentNodeHeader)
{
      int curNumber = 0;
      curNumber = Convert.ToInt32(parentNodeHeader); //**FormatException!!
      return curNumber;
}

注意:我单击以显示此错误的节点中没有数字值。但是,他们的父母这样做(这是我不明白的,因为我将父母的header 传递给函数)。

感谢您的帮助!

【问题讨论】:

    标签: c# wpf treeview formatexception


    【解决方案1】:

    Int32.TryParse 不应该引发异常...

    //Gets the number contained in a Node's header
    public static int getNumber(string parentNodeHeader)
    {
          int curNumber;
          //if parse to Int32 fails, curNumber will still be 0
          Int32.TryParse(parentNodeHeader, out curNumber);
          return curNumber;
    }
    

    编辑

    似乎你应该做这样的事情(当然,一些空检查会更好)

    //Initializing a parent TreeView Item
    var parentItem = (TreeViewItem)SelectedItem.Parent;
    var header = (TextBlock)parentItem.Header;
    int curNumber = getNumber(header.Text);
    

    【讨论】:

    • 好的,处理了异常。但是Int32.TryParse 失败了,因为curNumber 返回 0。有什么我可以告诉你的可以帮助你解释原因吗?
    • @Ericafterdark 好吧,你应该尝试慢慢调试,看看 parentItem 里有什么,然后 parentItem.Header 里...
    • 那么我的父节点的标题设置为TextBlock,有问题吗?在if 语句中,我得到了parentItem 的正确值,但是当它传递给getNumber 时,parentNodeHeader 显示"System.Windows.Controls.TextBlock" 作为它的值。
    • @Ericafterdark 我编辑了我的答案,你能测试一下编辑部分吗?
    • 我在var header = ... 上收到InvalidCastException
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    相关资源
    最近更新 更多