Introduction
我编写了一个简单的用户控件。
该控件包含一个FlowLayoutPanel和一个按钮。
单击事件处理程序按钮如下:
private void uxAdd_Click(object sender, EventArgs e)
{
count++;
Label label = new Label();
label.Text = "Label " + count.ToString();
uxFlowLayout.Controls.Add(label);
}Add按钮向FlowLayoutPanel添加一个标签,因为FlowLayoutPanel.AutoSize和控件的AutoSize属性等于true,FlowLayoutPanel.FlowDirection等于TopDown,因此控件的高度将增加。
我已经将用户控件放在窗体上,并将表单的AutoScroll属性设置为true。
此外,我还编写了以下布局事件处理程序:
private void MainForm_Layout(object sender, LayoutEventArgs e)
{
uxSection.Width = this.ClientSize.Width;
}(在Introduction部分的开头,uxSection是一个用户控件)
问题
以下是我正在做的事情:
步骤0。运行程序。

步骤1。添加几个标签,这样垂直滚动条就会出现。

步骤2。滚动到窗体的底部。

步骤3。水平调整窗体的大小。

如您所见,调整窗体大小后,滚动条位置不在底部(我希望它位于底部)。
所以问题是,我错过了什么?为什么滚动条会重置到顶部?
发布于 2012-02-28 13:50:48
之所以发生这种情况,是因为整个控件都是在调整大小的基础上重新绘制的。
您可能希望将滚动条的位置保存在变量中,以便在发生调整大小事件时,可以重置滚动条的位置,或者在触发调整大小事件时,将滚动条推到列表的底部,方法是使用列表中的项数来计算底部元素的位置,然后将滚动条推到该位置。
https://stackoverflow.com/questions/9464132
复制相似问题