字符串值未正确传递

时间:2013-08-23 19:13:14

标签: c# wpf string header treeviewitem

在我的计划中,我有一个TreeViewItem,其Header设置为数字integer值。为了将Header转换为直的int值,我将其传递给名为getNumber的函数。

我的getNumber功能:

此功能来自this previously asked question

//Gets the number contained in a Node's header
public static int getNumber(string parentNodeHeader)
{
    int curNumber = 0;
    Int32.TryParse(parentNodeHeader, out curNumber);
    return curNumber;
}

我在程序的几个不同区域以相同的方式传递给此函数,但在其中一个区域string未正确传递。在调试器中,它(parentNodeHeader)显示"System.Windows.Controls.StackPanel",因为它是值而不是数字。我不知道为什么会这样。

对于函数的工作调用以及不工作的调用,我使用相同的代码。

int curNumber = getNumber(SelectedItem.Header.ToString());

为什么会发生这种情况?我该如何解决?

更新

通过添加此内容,我已将调用更改为getNumber ...

var selectedHeader = (TextBlock)SelectedItem.Header; //The header is now a TextBlock
int curNumber = getNumber(selectedHeader.Text);

理论上这应该有效,但我得到InvalidCastException,表示无法将StackPanel强制转换为TextBlockStackPanel来自哪里......?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我没有使用getNumber()函数,而是使用Regexinteger中提取string

要使用Regex,您需要加入System.Text.RegularExpressions;

然后你这样实现它:var data = Regex.Match(stringValue, @"\d+").Value;