簡體   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