Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用文本框中的值更改矩形的高度_C# - Fatal编程技术网

C# 使用文本框中的值更改矩形的高度

C# 使用文本框中的值更改矩形的高度,c#,C#,我对C#很陌生,我试图在按下按钮时将矩形的高度更改为文本框中数字的值 所以当我硬编码时,我得到 private void btnGrafiek_Click(object sender, RoutedEventArgs e) { rct2010.Height = 150; } 这是没有texbox的,效果很好。 我想如果我使用文本框,我必须这样做: private void btnGrafiek_Click(object sender, RoutedEventAr

我对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;
    }

但这不起作用。谁能帮我一下吗?

高度是一个整数,但文本是一个字符串。如果字符串不能解析为整数,那么这是不安全的,但是对于您的简单示例来说,这是可行的

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;
    }
}
将其转换为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");
}

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

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

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

它是如何工作的?您不了解错误消息的哪一部分?高度是整数,但文本是字符串。如果字符串不能解析为整数,这是不安全的,但它适用于您的简单示例。@BillGregg,不。高度是双精度的。这里的上下文也有相同的区别,但值得指出的是,因为你是在对它进行评论:)@Garry。没错。我想我应该把它放在泛型上,只是说高度是数字。谢谢你让我诚实。谢谢你的快速回复。Parse工作得非常好,我从没想到会有这么快的响应。谢谢@ArnVanhoutte,代替“谢谢”评论,请阅读此…-谢谢