c# - 不能在列表中添加元素(在 C# 中)
问题描述
下面的代码我想将鼠标单击的坐标添加到列表中(我想在图片框中的不同位置单击 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);
}
解决方案
在每个 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);
}
它不会被销毁,但它的内容会被删除,所以你最终会得到一个空列表。所以你需要这样做:
List<String> myPoints = new List<String>();
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
textBox3.Text = e.X + " , " + e.Y;
myPoints.Add(textBox3.Text);
}
推荐阅读
- google-apps-script - 错误编码 MimeType.pdf,因为它显示 MimeType 未定义
- azure-data-factory-2 - Azure 数据工厂:架构更改
- python - Matplotlib 中的表隐藏值
- reactjs - “找不到模块 './style' 或其相应的类型声明”错误,打字稿 linter
- windows - 运行 Windows Docker Image 的 GitLab Runner 无法访问存储库
- python - Python - Discord Bot 多次将警告保存到 json 文件中
- sql-server - 类似 PIVOT 的功能
- reactjs - ReactJS 和 Tailwind CSS - 使用 h-screen 过度滚动
- reactjs - 为什么我在运行 ESLint 时收到“未找到规则‘导入/无外部依赖项’的定义”?
- python - 如何打印 CSV 数据列的最大值?