Gug*_*dze 7 c# scroll panel scrollbar winforms
我有一个panel1
用AutoScroll = true
.我必须做出panel1
滚动与btnUp
和btnDown
.到目前为止,我已经做了我的要求
private void btnUpClicked(Object sender, EventArgs e)
{
if (panel1.VerticalScroll.Value - 55 > 0)
panel1.VerticalScroll.Value -= 55;
else panel1.VerticalScroll.Value = 0;
}
private void btnDownClicked(Object sender, EventArgs e)
{
panel1.VerticalScroll.Value += 55;
}
Run Code Online (Sandbox Code Playgroud)
但现在我需要隐藏Scrollbar
或隐藏它.我试过了
panel1.VerticalScroll.Visible = false;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有什么想法吗?
好的,我已经为你做了这个工作的例子.您所要做的就是根据面板内所有项目的总大小来更改最大值.
表格代码:
public partial class Form1 : Form
{
private int location = 0;
public Form1()
{
InitializeComponent();
// Set position on top of your panel
pnlPanel.AutoScrollPosition = new Point(0, 0);
// Set maximum position of your panel beyond the point your panel items reach.
// You'll have to change this size depending on the total size of items for your case.
pnlPanel.VerticalScroll.Maximum = 280;
}
private void btnUp_Click(object sender, EventArgs e)
{
if (location - 20 > 0)
{
location -= 20;
pnlPanel.VerticalScroll.Value = location;
}
else
{
// If scroll position is below 0 set the position to 0 (MIN)
location = 0;
pnlPanel.AutoScrollPosition = new Point(0, location);
}
}
private void btnDown_Click(object sender, EventArgs e)
{
if (location + 20 < pnlPanel.VerticalScroll.Maximum)
{
location += 20;
pnlPanel.VerticalScroll.Value = location;
}
else
{
// If scroll position is above 280 set the position to 280 (MAX)
location = pnlPanel.VerticalScroll.Maximum;
pnlPanel.AutoScrollPosition = new Point(0, location);
}
}
}
Run Code Online (Sandbox Code Playgroud)
图片示例:
您必须在面板上将AutoScroll
选项设置为False.我希望你能理解我所做的一切,并让你的面板以你想要的方式运行.如果您有任何疑问,请随时询问.
通过将AutoScroll设置为true,Panel控件可以承担您赋予的职责。如有必要,这始终包括显示滚动条小工具。因此,您尝试执行的操作无法正常工作,因为它会改变工作区,所以隐藏垂直滚动条会迫使Panel重新计算布局。当然,它将发现滚动条是必需的,并迅速使其再次可见。
Panel执行此操作的代码是从ScrollableControl继承的,它是内部代码,不能被覆盖。这是故意的。
因此,使用AutoScroll并不能助您一臂之力。另外,请记住您真正想要完成的事情。您只想上下移动控件。容易做到,只需更改其Location属性。反过来,如果将控件放在另一个足以容纳它们的面板上,则最容易做到。将其AutoSize属性设置为True。只需更改面板的Location属性即可实现按钮的Click事件处理程序:
private const int ScrollIncrement = 10;
private void ScrollUpButton_Click(object sender, EventArgs e) {
int limit = 0;
panel2.Location = new Point(0,
Math.Min(limit, panel2.Location.Y + ScrollIncrement));
}
private void ScrollDownButton_Click(object sender, EventArgs e) {
int limit = panel1.ClientSize.Height - panel2.Height;
panel2.Location = new Point(0,
Math.Max(limit, panel2.Location.Y - ScrollIncrement));
}
Run Code Online (Sandbox Code Playgroud)
其中panel1是外部面板,panel2是内部包含控件的面板。当您使用设计器在其上放置控件时,请务必小心,因为它具有将错误的“父对象”赋予它们的诀窍。确保使用“查看+其他Windows +文档布局”帮助器窗口,以便您可以看到此错误。填充后,将其AutoSizeMode属性设置为GrowAndShrink,以使其捕捉到其最小大小。
归档时间: |
|
查看次数: |
12731 次 |
最近记录: |