【发布时间】:2012-02-27 11:19:58
【问题描述】:
简介
我写了一个简单的用户控件。
该控件包含一个 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。
我还编写了以下 Layout 事件处理程序:
private void MainForm_Layout(object sender, LayoutEventArgs e)
{
uxSection.Width = this.ClientSize.Width;
}
(uxSection 是我在简介部分开头所说的用户控件)
问题
这是我正在做的事情:
第 0 步。运行程序。
第 1 步。添加一些标签,以便出现垂直滚动条。
第 2 步。滚动到表单底部。
第 3 步。水平调整表单大小。
如您所见,调整表单大小后,滚动条位置不在底部(我希望它在底部)。
所以问题是,我错过了什么?为什么滚动条会重置到顶部?
【问题讨论】:
-
为什么滚动条看起来像是在窗体上而不是在 UserControl 上? FlowLayoutPanel 中的按钮也是?标签无法获得焦点,但您的按钮可以,这就是它滚动回视图的原因。 WinForms 正在尝试帮助用户在屏幕上显示活动控件。
-
@LarsTech:谢谢你的提示。经过一些谷歌搜索后,我在这里找到了一种解决方法:nickstips.wordpress.com/2010/03/03/…