gpt4 book ai didi

c# - 手动告诉我的 ListBox 的滚动条在哪里

转载 作者:行者123 更新时间:2023-11-30 14:18:26 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com