-4

我对 C# 很陌生,当我按下按钮时,我试图将矩形的高度更改为文本框中数字的值。

所以当我对它进行硬编码时,我得到了

private void btnGrafiek_Click(object sender, RoutedEventArgs e)
    {
        rct2010.Height = 150;
    }

这是没有 texbox 并且工作正常。如果我使用文本框,我想我必须这样做:

private void btnGrafiek_Click(object sender, RoutedEventArgs e)
    {
        rct2010.Height = txt2010.Text;
    }

但这不起作用。有人可以帮我吗?

4

3 回答 3

0

Height 是一个整数,但 Text 是一个字符串。这不安全,以防字符串无法解析为整数,但它适用于您的简单示例。

private void btnGrafiek_Click(object sender, RoutedEventArgs e)
{
    rct2010.Height = int.Parse(txt2010.Text);
}

为了真正安全,您将使用 TryParse。

private void btnGrafiek_Click(object sender, RoutedEventArgs e)
{
    int height;
    if(int.TryParse(txt2010.Text,out height))
    {
       rct2010.Height = height;
    }
    else
    {
       rct2010.Height = 150;
    }
}
于 2013-10-01T19:07:20.790 回答
0

将其转换为 int

private void btnGrafiek_Click(object sender, RoutedEventArgs e)
    {
        rct2010.Height = int.Parse(txt2010.Text);
    }

或者你可以更进一步

private void btnGrafiek_Click(object sender, RoutedEventArgs e)
{
    int i = 0;
    if(int.TryParse(txt2010.Text, out i)
        rct2010.Height = i;
    else
        MessageBox.Show("That's not a number");
}
于 2013-10-01T19:07:26.887 回答
0

大概是Heightis的类型int,因此分配 type 的值string将不起作用,并且您将收到一个编译时错误说明(请随时澄清);您需要转换类型,例如:

int height = 0;
if (int.Parse(txt2010.Text, out height)) {
  rct2010.Height = height;
}

TryParse与其他建议相反Parse)将确保您的应用程序在无法解析值时不会遇到异常(即,它是错误的、意外的输入)。但是另一方面,这意味着您的应用程序显然对输入没有任何作用(因为它没有),因此您可能希望使用else案例来通知用户。

于 2013-10-01T19:08:16.577 回答