2010-11-08 27 views
6

我有一個面板AutoScroll設置爲true。其中,我正在編程添加ComboBox控件。如果我添加了足夠的控件以超過面板的可視大小,則會出現滾動條(目前爲止非常好)。但是,如果我打開可視區域底部附近的組合框之一,組合列表將無法正確顯示,並且可滾動區域似乎會擴大。這導致所有控件被「拉」到面板的新底部,頂部有一些新的空白區域。如果我繼續點擊面板底部的下拉菜單,則可滾動區域將繼續無限擴展。我將控件固定在左側,右側和頂部,所以我不認爲涉及錨定。是否有明顯的可能導致這種情況?在可滾動面板中導致問題的組合框

更新:看起來問題在於將控件固定在右側。如果我不靠右邊,那麼我不會得到奇怪的行爲。但是,如果沒有正確的錨定,控件會被滾動條截斷。

這裏有一個簡單的測試情況下,我建立了一個顯示問題:

public Form1() 
    { 
     InitializeComponent(); 

     Panel panel = new Panel(); 
     panel.Size = new Size(80, 200); 
     panel.AutoScroll = true; 

     for (int i = 0; i < 10; ++i) 
     { 
      ComboBox cb = new ComboBox(); 
      cb.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; 
      cb.Items.Add("Option 1"); 
      cb.Items.Add("Option 2"); 
      cb.Items.Add("Option 3"); 
      cb.Items.Add("Option 4"); 
      cb.Location = new Point(0, i * 24); 
      panel.Controls.Add(cb); 
     } 

     Controls.Add(panel); 
    } 

如果滾動面板的底部,並點擊組合框的底部附近你會發現奇怪的行爲。

+0

什麼平臺? Silverlight的? WPF?閃?的WinForms? ASP? (etc.) – 2010-11-08 21:24:03

+0

Winforms,對不起,因爲沒有包含該標籤。 – Dennis 2010-11-08 21:35:58

+0

我試過你的測試代碼,沒有看到你所描述的任何東西。你正在使用哪個版本的Visual Studio? – stone 2010-11-09 18:14:48

回答

0

這似乎是您正在使用的設備特有的問題。我根本無法重現這種行爲。你有沒有嘗試設置面板的Dock屬性?如何影響滾動行爲的其他屬性(AutoScrollMargin,AutoScrollMinSize,AutoScrollPosition)?我也會玩面板的大小,也許使用System.Windows.Forms.Screen類來根據設備自動確定它。

+0

這種行爲絕對看起來像設備特定的。我已經在幾臺設備上試過了,並且無法在所有設備上重現它。我要聯繫製造商,看看他們的設備上是否存在這種情況,而不是其他人。回覆晚了非常抱歉... – Dennis 2011-01-10 21:26:13

0

嘗試將autoscroll設置爲false,並嘗試正常使用滾動條。或者,如果你無法找到另一個合理的解決方案,可以處理scroll/resize事件並手動調整大小/移動你的控件(確切地說錨是什麼)雖然這會很煩人,但它會擺脫你可能遇到的任何問題。

0

我也能夠在Visual Studio 2005,.Net CF 2.0下測試Windows CE設備,因爲我們也有使用舊設備的東西。我沒有問題。可能是導致問題的設備上的Windows CE版本的任何問題?正在使用什麼設備(即:製造商?)。我甚至創建了一個全新的單一形式的項目,所以沒有其他事情可以改變/影響你的代碼。

這些行爲在調試,運行時還是兩者都有效?