2014-09-20 57 views
0

FlowLayoutPanel中有一些用戶控件。每個用戶控件都有其用戶控制信息的標籤。FlowLayoutPanel:更改內部項目值/文本使其滾動錯誤

的FlowLayoutPanel的屬性:

AutoScroll = true 
WrapContents = false 

通過單擊用戶控件(背景)標籤信息被更新。但是如果在FlowLayoutPanel中有許多用戶控件並且具有自動滾動屬性,則單擊項目時滾動會出錯,看起來像單擊用戶控件的滾動條頂部。

如何解決此滾動問題?


OK,這裏是一個演示GIF文件,它的第一部分顯示,滾動運作良好不點擊物品(更改值),第二部分地方證明滾動棍棒打倒單擊某個項目(其改變值)。

FlowLayoutPanel problem with inner items changes

  • 我應該說,FlowLayoutPanel.PerformLayout()不FlowLayoutPanel中的內部項目工作。

***即使點擊FlowLayoutPanel中的區域也會導致問題!我沒有測試它。

+0

幾次閱讀您的問題後,我仍然不確定發生了什麼。你能多解釋一下嗎?標籤是否超出用戶控件?你可以張貼圖片嗎? – TaW 2014-09-20 07:33:32

+1

酷炫演示!但我無法複製。你可以爲你正在使用的平臺添加一個標籤(WPF或Winfiorms ?!)我假設你沒有用Focus,SelectNextControl或類似的東西做有趣的事情嗎? – TaW 2014-09-20 11:29:12

回答

0

解決!

將此代碼放入usercontrol代碼中完成的解決方案。

private void ResControl_MouseDown(object sender, MouseEventArgs e) 
{ 
    this.Parent.Parent.Controls[0].Focus(); 
} 

它消除了該FlowLayoutPanel的焦點。

  • 請注意,代碼中有兩個Parent,因爲必須捕獲表單。 Usercontrols位於FlowLayoutPanel中,FlowLayoutPanel位於表單中。