C# 在以下代码的第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

第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 = 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
}