我正在尝试以一种形式创建一个图片框,当在特定的X / Y范围(矩形)内单击时,将打开第二个表单。我的问题是让lblX和lblY的字符串值在我的'If'语句中正确运行:
private void picboxMain_MouseUp(object sender, MouseEventArgs e)
{
Convert.ToInt32(lblX.Text);
Convert.ToInt32(lblY.Text);
if ((lblX >= 155 && lblX <= 179) && (lblY >= 145 && lblY <= 160))
{
Form2 Form2 = new Form2();
Form2.Show();
}
}
希望我很清楚我正在尝试做什么。该错误表明“运算符&gt; =不能与label和int一起使用”。任何人都可以看到我所缺少的并推荐一个解决方案吗?
谢谢,A。
答案 0 :(得分:8)
Convert.ToInt32
返回整数值。你需要分配它:
var x = Convert.ToInt32(lblX.Text);
var y = Convert.ToInt32(lblY.Text);
if ((x >= 155 && x <= 179) && (y >= 145 && y <= 160))
{
Form2 Form2 = new Form2();
Form2.Show();
}
还考虑使用int.TryParse
并在输入错误的情况下处理失败的转换:
int x;
int y;
if (!int.TryParse(lblX.Text, out x) || !int.TryParse(lblY.Text, out y))
{
// Oh no, a problem! Do something, quick!
}
else
{
if ((x >= 155 && x <= 179) && (y >= 145 && y <= 160))
{
Form2 Form2 = new Form2();
Form2.Show();
}
}
答案 1 :(得分:3)
Convert.ToInt32
会返回int
,因此您需要先将其分配给变量,然后检查变量
private void picboxMain_MouseUp(object sender, MouseEventArgs e)
{
int x = Convert.ToInt32(lblX.Text);
int y = Convert.ToInt32(lblY.Text);
if ((x >= 155 && x <= 179) && (y >= 145 && y <= 160))
{
Form2 Form2 = new Form2();
Form2.Show();
}
}
答案 2 :(得分:3)
您正在将标签的文本转换为整数,但您没有将它们保存在任何位置,以后您要将标签与这些值进行比较,它应该是这样的:
private void picboxMain_MouseUp(object sender, MouseEventArgs e)
{
int X = Convert.ToInt32(lblX.Text);
int Y = Convert.ToInt32(lblY.Text);
if ((X >= 155 && X <= 179) && (Y >= 145 && Y <= 160))
{
Form2 Form2 = new Form2();
Form2.Show();
}
}
将转化结果存储在变量X
和Y
中,然后比较您的条件。
您还可以查看int.TryParse方法以获得更安全的解析(解析失败时不会引发异常)。还可以考虑使用Microsoft coding conventions进行变量命名。
答案 3 :(得分:3)
Convert.ToInt32
返回int
您应该将其分配给变量,以将转换后的标签值与您的坐标进行比较
private void picboxMain_MouseUp(object sender, MouseEventArgs e)
{
int lx= Convert.ToInt32(lblX.Text);
int ly =Convert.ToInt32(lblY.Text);
if ((lx >= 155 && lx <= 179) && (ly >= 145 && ly <= 160))
{
Form2 Form2 = new Form2();
Form2.Show();
}
}
答案 4 :(得分:1)
您需要将转化结果存储到变量中。
private void picboxMain_MouseUp(object sender, MouseEventArgs e)
{
int x = Convert.ToInt32(lblX.Text);
int y = Convert.ToInt32(lblY.Text);
if ((x >= 155 && x <= 179) && (y >= 145 && y <= 160))
{
Form2 Form2 = new Form2();
Form2.Show();
}
}