0

在我的程序中,我将TreeViewItemHeader设置为一个数值integer。为了将 转换Header为直接int值,我传递给一个名为getNumber.

我的getNumber功能:

此功能来自此先前提出的问题

//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转换为TextBlock. 来自哪里StackPanel……?

谢谢你的帮助。

4

1 回答 1

1

而不是使用getNumber()我用来Regexinteger.string

为了使用Regex你需要包括System.Text.RegularExpressions;

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

于 2013-08-27T15:49:31.720 回答