下面的代码我想将鼠标单击的坐标添加到列表中(我想在图片框中的不同位置单击 4 次)并且我想将鼠标单击的坐标存储在列表中
但此功能仅存储列表中的最后一个坐标(新坐标替换为最后一个坐标,并且不能添加到列表末尾)。我的列表始终只有一个元素(在列表中单击 4 次需要有 4 个坐标)(每次单击后,我在 textbox3 中都有新坐标,并且我在列表中也使用了列表 < Point > ,结果相同)感谢您的帮助
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
List<String> myPoints = new List<String>();
textBox3.Text = e.X + " , " + e.Y;
myPoints.Add(textBox3.Text);
}
Run Code Online (Sandbox Code Playgroud)
在每个 MouseDown 上,您声明并初始化列表 - 因此您需要将其移到此方法之外 - 以便在此函数的范围结束后它不会被破坏,并且不会被重新初始化覆盖。
当您在作用域内声明变量时 - 在本例中是 pictureBox1_MouseDown 方法的作用域,一旦函数完成,它就会被销毁。
此外,如果您要在函数外部声明变量但在函数内部初始化它,如下所示:
List<String> myPoints;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
myPoints = new List<String>();
textBox3.Text = e.X + " , " + e.Y;
myPoints.Add(textBox3.Text);
}
Run Code Online (Sandbox Code Playgroud)
它不会被破坏,但它的内容会被删除,所以你最终会得到一个空列表。所以你需要这样做:
List<String> myPoints = new List<String>();
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
textBox3.Text = e.X + " , " + e.Y;
myPoints.Add(textBox3.Text);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |