我正在制作(学校)绘制曲线的应用程序.我通过鼠标单击设置点,并将它们的位置添加到顶点列表.现在我正在使用鼠标按下和鼠标按下操作来移动点.在鼠标按下时,我会发现鼠标的位置是否位于顶点列表中任何顶点周围的小方块(4x4像素)中,然后在鼠标向上时我想将顶点的坐标更改为我向上提起鼠标按钮的坐标.但我遇到了问题List因为visual studio说List项目无法更改,因为它不是变量.我怎么解决这个问题?
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: ?";
}
Run Code Online (Sandbox Code Playgroud)
问题:
错误1无法修改'System.Collections.Generic.List.this [int]'的返回值,因为它不是变量
这是因为它Point是结构而不是对象.您可以将结构视为分组值.
因此,当您访问顶点[indexOfMoved]时,您将获得列表中的内容的副本,而不是实际的"对象".
你可以这样做:
vertices[indexOfMoved] = new Point { X = e.X, Y = e.Y };
Run Code Online (Sandbox Code Playgroud)