2017-11-11 145 views
0

更新: 我沒有提及我也在使用MetroTabControl,因爲我認爲它不相關。但是,我做了更多的測試,下面是我的結果。我也會張貼這個作爲我自己問題的答案。當MetroTiles被移除時,MetroPanel滾動位置不重置

  1. MetroPanel這是造成問題的是不同的選項卡比按鈕,更新

我把不同的MetroPanel相同標籤的違規按鈕和中提琴上,該面板的工作完全正常。我繼續刪除原始的MetroPanel並在單獨的標籤頁上重新創建它。這似乎解決了問題。我不知道如何,但它在那裏。

原始文本:
情況是這樣的:

  1. MetroModernUI包由丹尼斯·馬格諾,V1.4.0安裝在一個MetroForm的 解決方案
  2. MetroPanelAutoScroll設置爲true水平處理 瓷磚
  3. MetroTiles在運行時基於給定的配置創建uration
  4. 當配置改變時,所有的瓦片被卸載並重新加載

注:我並不擔心卸載,每次重裝所有的磚的性能影響。我預計一次不會超過10個。

問題: 當水平滾動條被定位一路到面板的右側,和一個MetroTile被去除,不重置。這可以使滾動位置在實際的可滾動區域之外,就我所知。這會導致閃爍,我的MetroTiles實際上並沒有出現。我嘗試了所有我能想到的相關滾動屬性,但我不知所措。您可以在以下代碼片段中看到我正在使用AutoScrollPositionHorizontalScroll.Value來嘗試重置它,但它不會重置。

例子: 這裏是發生了什麼事的GIF: https://gyazo.com/362b83abae795f728675a3c11fcf6a29

代碼:

public void LoadTiles(MetroPanel panel) 
{ 
    foreach (Feed feed in Feeds.GetFeedsFromConfig()) 
    { 
     var tile = CreateTile(feed); 
     AddTile(panel, tile); 
    } 

} 
public void UnloadTiles(MetroPanel panel) 
{ 

    var tiles = panel.Controls.OfType<MetroTile>().ToArray(); 
    for(var i = tiles.Count()-1; i>=0; i--) 
    { 
     panel.Controls.Remove(tiles[i]); 
     tiles[i].Dispose(); 
    } 
    panel.AutoScrollPosition = new Point(0, 0); 
    panel.HorizontalScroll.Value = 0; 
} 
public void AddTile(MetroPanel panel, MetroTile tile) 
{ 
    var numTiles = panel.Controls.OfType<MetroTile>().Count(); 
    tile.Location = new Point(numTiles * 155, 0); 
    panel.Controls.Add(tile); 
} 
public MetroTile CreateTile(Feed feed) 
{ 
    MetroTile tile = new MetroTile(); 
    tile.Text = feed.Name; 
    tile.Style = MetroColorStyle.Purple; 
    tile.TileTextFontSize = MetroTileTextSize.Tall; 
    tile.UseStyleColors = true; 
    tile.Theme = MetroThemeStyle.Dark; 
    tile.Tag = feed; 
    tile.Click += new EventHandler(LoadFeedInBrowser); 
    tile.Size = new Size(150, 100); 
    return tile; 
} 

回答

0

我沒有提到我也使用MetroTabControl因爲我沒有認爲這是相關的。但是,我做了更多的測試,下面是我的結果。我也會張貼這個作爲我自己問題的答案。

  1. MetroPanel這是造成問題的是不同的選項卡比按鈕,更新

我把不同的MetroPanel相同標籤的違規按鈕和中提琴上,該面板的工作完全正常。我繼續刪除原始的MetroPanel並在單獨的標籤頁上重新創建它。這似乎解決了問題。我不知道如何,但它在那裏。我唯一的猜測是,我不知何故搞砸了原來的MetroPanel