我正在制作(学校)绘制曲线的应用程序。我通过鼠标点击设置点并将它们的位置添加到顶点列表中。现在我正在使用鼠标按下和鼠标抬起的 Action 来移动点。在鼠标按下时,我发现鼠标的位置是否在顶点列表中任何顶点周围的小方块(4x4 像素)中,然后在鼠标抬起时我想将顶点坐标更改为我抬起鼠标按钮的坐标。但是我遇到了 List
的问题,因为 Visual Studio 说列表项无法更改,因为它不是变量。我该如何解决这个问题?
List<Point> vertices = new List<Point>(); //list of vertices
void canvas_MouseUp(object sender, MouseEventArgs e) {
if (!move) return; //if moving is off returns
vertices[indexOfMoved].X = e.X; //change X position to new position
vertices[indexOfMoved].Y = e.Y; //change Y position to new position
indexOfMovedLabel.Text = "Moved: ?";
}
问题:
最佳答案
这是因为 Point
是一个结构而不是一个对象。您可以将结构视为分组值。
因此,当您访问 vertices[indexOfMoved] 时,您将获得列表中内容的副本,而不是实际的“对象”。
你可以这样做:
vertices[indexOfMoved] = new Point { X = e.X, Y = e.Y };
关于c# - 更改 List<Point> 项的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10738506/