当前位置: 首页 > 编程语言 > C#

如何以编程方式滚动面板分享

时间:2023-04-10 19:31:26 C#

C#学习教程:如何以编程方式滚动面板我正在尝试以编程方式向上或向下(垂直)滚动面板。我已经尝试将AutoScrollPosition属性设置为面板上的新点,但似乎并没有这样做。我将AutoScroll属性设置为true。我什至尝试按照此处的建议将VerticalScroll.Value设置两次,但这似乎也没有用。这就是我目前正在做的事情://Ihavetriedpassingbothpositiveandnegativevalues.panel.AutoScrollPosition=newPoint(5,10);AutoScrollPosition上的X和Y值保持为0和0。任何帮助或指导将不胜感激。在此先感谢Marwan这是一个解决方案。我认为您可以使用Win32在任何位置滚动您的面板,但是有一个简单的技巧可以帮助您在这里实现您想要的:publicvoidScrollToBottom(Panelp){using(Controlc=newControl(){Parent=p,Dock=DockStyle.Bottom}){p.ScrollControlIntoView(c);c.Parent=null;}}//使用代码ScrollToBottom(yourPanel);或者为了方便使用扩展方法:);c.Parent=null;}}}//使用代码yourPanel.ScrollToBottom();更新如果你想设置确切的位置,修改上面的代码可以帮助://这可以帮助你控制滚动条上下滚动。//位置有点特殊。//向上滚动的位置应该是负数。//向下滚动的位置应该是正数publicstaticclassPanelExtension{publicstaticvoidScrollDown(thisPanelp,intpos){//传入的pos应该是正数using(Controlc=newControl(){Parent=p,Height=1,顶部=p.ClientSize.Height+pos}){p.ScrollControlIntoView(c);}}publicstaticvoidScrollUp(thisPanelp,intpos){//传入的pos应该是负数using(Controlc=newControl(){Parent=p,Height=1,Top=pos}){p.ScrollControlIntoView(C);}}}//使用代码,假设你有2个按钮,上下控制滚动条而不是直接点击滚动条arrows.inti=0;privatevoidbuttonUp_Click(objectsender,EventArgse){if(i>=0)i=-1;你的面板.ScrollUp(i--);}privatevoidbuttonDown_Click(objectsender,EventArgse){if(i您可能想使用的另一种解决方案是使用Panel.VerticalScroll.Value但我认为您需要更多研究才能使其按预期工作。因为我可以看到一次你改变了价值,滚动条的位置和控制位置只是不同步好。注意Panel.VerticalScroll.Value应该在Panel.VerticalScroll.Minimum和Panel.VerticalScroll.Maximum之间。试试这个:-panel.ScrollControlIntoView(childcontrol);这个应该Work.childcontrol就是你要显示在显示区的具体控件。如果您有一个派生自Panel的类,请调用这两个受保护的方法来滚动面板://Thebottomisoffscreen;向下滚动。这些坐标必须为负数或零。SetDisplayRectLocation(0,AutoScrollPosition.Y-item.BoundingRect.Bottom+ClientRectangle.Bottom);AdjustFormScrollbars(true);在我的例子中,item.BoundingRect.Bottom是缩略图底部的Y坐标,我需要向下滚动面板以便整个缩略图可见。@KingKing创建临时控件以便可以完成滚动的解决方案对我来说似乎“很重”。@HansPassant关于设置AutoScrollMinSize和AutoScrollPosition的建议对我不起作用。将AutoScroll保留为默认值“true”。使用@KingKing已经回答的代码,如果你想隐藏水平和垂直滚动条,只需在构造函数或初始化中应用以下代码。yourPanel.AutoScroll=false;你的Panel.Horizo??ntalScroll.Maximum=0;yourPanel.Horizo??ntalScroll.Visible=false;你的Panel.VerticalScroll.Maximum=0;yourPanel.VerticalScroll.Visible=false;你的Panel.AutoScroll=true;无法让我的面板滚动回顶部。在用许多控件填充面板后,我已经尝试了很多方法让面板滚动回顶部。无论我做什么,总是将VScroll条放在底部。经过详尽的测试,我发现这是因为我的控件将TabStop属性设置为true(默认情况下是用户控件)导致了问题。将TabStop设置为false修复了它。这太棒了!请注意代码中的减号。设置滚动位置时的奇怪行为。如果将位置设置为精确值(50),则在下一次读取时它将变为负数(-50)。所以你必须在设置新的滚动值之前反转它。向下滚动:privatevoidButtonScrollDown_OnClick(objectsender,EventArgse){Pointcurrent=yourScrollPanel.AutoScrollPosition;点滚动=新点(current.X,-current.Y+10);yourScrollPanel.AutoScrollPosition=滚动;}同样向上滚动,(-Currently.Y-10)以上就是C#学习教程的全部内容:如何通过编程方式滚动面板。如果对大家有用,需要进一步了解C#学习教程,还望大家多加关注---本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: