private void button2_Click(object sender, EventArgs e)
{
listBox1.AutoScrollOffset.Y = 10;
}
我正在尝试在运行时使用代码手动设置垂直滚动条的位置。这是我试过的。
.Y 属性表示:“获取或设置该点的 Y 坐标”。为什么这不能编译并给我一个异常(exception):
Error 1 Cannot modify the return value of 'System.Windows.Forms.Control.AutoScrollOffset' because it is not a variable
最佳答案
这是值类型和引用类型之间的重要区别。 AutoScrollOffset 属于 Point 类型,这是一种使其成为值类型的结构。当您使用属性 getter 时,您会得到该值的副本。设置 Y 属性只会设置副本上的属性。 C# 编译器可以识别这个特定的使用问题。但不是这个:
private void button2_Click(object sender, EventArgs e)
{
var offset = listBox1.AutoScrollOffset;
offset.Y = 10; // Compiles, but doesn't work
}
如果您必须为属性分配点类型的值,则要使其正常工作:
private void button2_Click(object sender, EventArgs e)
{
listBox1.AutoScrollOffset = new Point(listBox1.AutoScrollOffset.X, 10);
}
滚动列表框实际上不起作用,它只会影响控件嵌入可滚动容器(如 Panel)中时的位置。检查 ScrollControlIntoView 以供引用。
改为分配 TopIndex 属性。
关于c# - 手动告诉我的 ListBox 的滚动条在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4489904/