[英]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
按钮将标签Add
到FlowLayoutPanel
上,并且由于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.