C# 在以下代码的第6行上获取错误
第6行出现错误:C# 在以下代码的第6行上获取错误,c#,C#,第6行出现错误:无法将类型字符串转换为int。您需要将文本框中的字符串转换为整数: private void pictureBox1_Paint_1(object sender, PaintEventArgs e) { Pen graphPen = new Pen(Color.Red, 2); Point pt1D = new Point(); Point pt2D = new Point(); pt1D.X = t
无法将类型字符串转换为int。
您需要将文本框中的字符串转换为整数:
private void pictureBox1_Paint_1(object sender, PaintEventArgs e)
{
Pen graphPen = new Pen(Color.Red, 2);
Point pt1D = new Point();
Point pt2D = new Point();
pt1D.X = textBox3.Text.ToString();
e.Graphics.DrawLine(graphPen, pt1D, pt2D);
}
改为:
private void pictureBox1_Paint_1(object sender, PaintEventArgs e)
{
Pen graphPen = new Pen(Color.Red, 2);
Point pt1D = new Point();
Point pt2D = new Point();
int xCoord = int.Parse(textBox3.Text);
pt1D.X = xCoord;
e.Graphics.DrawLine(graphPen, pt1D, pt2D);
}
其他选项是正确的,您需要转换值,但仅使用
int.Parse
可能会导致错误,并且val=int.TryParse
不是您使用int.TryParse
的方式,因此,更正:
private void pictureBox1_Paint_1(object sender, PaintEventArgs e)
{
int value = 0;
Pen graphPen = new Pen(Color.Red, 2);
Point pt1D = new Point();
Point pt2D = new Point();
pt1D.X = (int.tryParse(textBox3.Text, out value)) ? value : 0;
e.Graphics.DrawLine(graphPen, pt1D, pt2D);
}
另一件需要提及的事情是,Pen
实现了IDisposable
,因此您应该在使用完该东西后将其处理掉;您可以通过显式调用Dispose
或使用执行此操作:
int result = 0;
if (int.TryParse(textBox3.Text, out result)) {
pt1D.X = result;
} else {
// input isn't an integer
}
int.TryParse
返回布尔值,因此该值无效。另外,C#中没有Int
,只有Int
或Int32
。因此,除了我能做的以外,它现在应该可以工作了。嘿,我想用四个文本框在图像上画一条线。我该怎么做呢。编辑是为了健壮。有时候这可能会奏效。@GrantThomas我很难做到这一点。这个网站的理念似乎是“简单,直接的问题,简单,直接的答案”,这是我倾向于坚持的。然而,当我简单地回答这个问题时,我看到其他人批评我没有回答其他未回答的问题。在本例中,数据验证是一个相当广泛的主题,仅仅通过TryParse
并不能真正解决。我的意见是,如果提问者对数据验证有进一步的疑问,他们可以提问。然而,我看到了另一面,初学者可能需要额外的推动。在这些情况下,我对如何回答感到矛盾。也许我应该在Meta上问一下……你的回答在技术上是正确的,足以在正确的情况下得到预期的结果,而验证无疑是一个非常值得探讨的话题,但它不需要掩盖解决方案,而且几乎有责任至少概述一个给定的解决方案如何失败——评估受众。问题在哪里?你有没有试过学习,特别是?你试过什么吗?模糊的标题不太可能帮助未来的访问者回答同样的问题。好吧,谢谢,使用四个文本框怎么样?我的意思是用四个文本框画线。如果要更多的文本框,只需再摇动一些相同的文本框。@GrantThomas我不太清楚为什么,但你使用的措辞(再摇动一些)让我笑了。
using (Pen graphPen = new Pen(Color.Red, 2)) {
// do what you need with the pen,
// it will be disposed when exiting this scope
}