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坐标”.为什么不编译并给我一个例外:
解决方法
这是值类型和引用类型之间的关键区别. 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属性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |