我寫了一個簡單的用戶控制。
該控件包含一個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
屬性等於真實FlowLayoutPanel.FlowDirection
等於TopDown
控制會身高增加。
我已將我的用戶控件放在窗體上,並將窗體的AutoScroll
屬性設置爲true。
而且我寫了下面佈局事件處理程序:
private void MainForm_Layout(object sender, LayoutEventArgs e)
{
uxSection.Width = this.ClientSize.Width;
}
(uxSection是我在介紹部分的開頭講的用戶控件)
問題
這是我在做什麼:
步驟0。運行該程序。
步驟1。添加幾個標籤,以便顯示垂直滾動條。
步驟2。滾動到表單底部。
步驟3。水平調整窗體大小。
正如你所看到的,調整後的形式,滾動條位置是不是在底部(我希望它是在底部)。
所以問題是,我錯過了什麼?爲什麼滾動條重置到頂部?
爲什麼它看起來像滾動條是在窗體上,而不是在UserControl? FlowLayoutPanel中的按鈕也是?標籤無法獲得焦點,但您的按鈕可以,這就是爲什麼它滾動回到視圖。 WinForms試圖幫助用戶在屏幕上顯示活動控件。 – LarsTech 2012-02-28 13:57:23
@LarsTech:現貨! – RvdK 2012-02-28 14:11:25
@LarsTech:謝謝你的提示。經過一番谷歌搜索後,我發現了一個解決方法:http://nickstips.wordpress.com/2010/03/03/c-panel-resets-scroll-position-after-focus-is-lost-and-regained/ – 2012-02-29 07:31:46