繁体   English   中英

奇怪的自动滚动行为

[英]Strange AutoScroll behavior

介绍

我已经编写了一个简单的用户控件。

该控件包含一个FlowLayoutPanel和一个按钮。

按钮单击事件处理程序如下:

private void uxAdd_Click(object sender, EventArgs e)
{
    count++;
    Label label = new Label();
    label.Text = "Label " + count.ToString();
    uxFlowLayout.Controls.Add(label);
}

Add按钮将标签AddFlowLayoutPanel上,并且由于FlowLayoutPanel.AutoSize和控件的AutoSize属性等于true且FlowLayoutPanel.FlowDirection等于TopDown因此控件的高度将增加。

我已经将用户控件放在窗体上,并将窗体的AutoScroll属性设置为true。

我还编写了以下Layout事件处理程序:

private void MainForm_Layout(object sender, LayoutEventArgs e)
{
    uxSection.Width = this.ClientSize.Width;
}

uxSection是我在“ 简介”部分的开头要谈论的用户控件)

问题

这是我在做什么:

步骤0 运行程序。

步骤1 添加一些标签,以便出现垂直滚动条。

第二步 滚动到窗体的底部。

第三步 水平调整窗体的大小。

在此处输入图片说明

如您所见,在调整窗体大小之后,滚动条位置不在底部(我希望它在底部)。

所以问题是,我想念什么? 滚动条为什么重置到顶部?

发生这种情况是因为在调整大小后重新绘制了整个控件。

您可能希望将滚动条的位置保存在变量中,以便在发生调整大小事件时可以重置滚动条的位置,或者在调整大小时将滚动条推到列表的底部通过使用列表中的项目数来计算底部元素的位置,然后将滚动条推到该位置,从而触发事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM