加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:39:54 所属栏目:百科 来源:网络整理
导读:private void button2_Click(object sender,EventArgs e){ listBox1.AutoScrollOffset.Y = 10;} 我正在尝试在运行时使用代码手动设置垂直滚动条的位置.这就是我尝试过的. .Y属性说:“获取或设置此点的Y坐标”.为什么不编译并给我一个例外: Error 1 Cannot
private void button2_Click(object sender,EventArgs e)
{
    listBox1.AutoScrollOffset.Y = 10;
}

我正在尝试在运行时使用代码手动设置垂直滚动条的位置.这就是我尝试过的.

.Y属性说:“获取或设置此点的Y坐标”.为什么不编译并给我一个例外:

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
}

如果必须为属性指定Point类型的值,则使其工作:

private void button2_Click(object sender,EventArgs e)
{
    listBox1.AutoScrollOffset = new Point(listBox1.AutoScrollOffset.X,10);
}

实际上滚动列表框并不起作用,它只会影响控件嵌入可滚动容器(如Panel)时的位置.检查ScrollControlIntoView以供参考.

改为分配TopIndex属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读