2017-11-11 21 views
0

UPDATE: が、私はそれが関連するとは思わなかったので、私はまたMetroTabControlを使用していたことを言及しませんでした。しかし、私はもう少しテストをしましたが、私の結果は以下の通りです。私は自分の質問に対する答えとしてこれを掲示します。MetroPanelのスクロール位置

  1. 問題を引き起こしているMetroPanelは、私は、問題のあるボタンとビオラと同じタブに異なるMetroPanelを入れ

それを更新ボタンとは別のタブにある、このパネルは完全にうまく働きました。元のMetroPanelを削除し、別のタブページで再作成しました。これは問題を修正したようです。どういうわけか分かりませんが、そこにはあります。これは状況です

オリジナルテキストデニス・マグノによって

  1. MetroModernUIパッケージ、1.4.0をtrueに設定MetroFormAutoScrollに ソリューション
  2. MetroPanelにインストールされています水平を処理する タイル
  3. MetroTilesは、指定された設定に基づいて実行時に作成されますuration
  4. 構成が変更され
  5. は、すべてのタイルがアンロードと

注意をリロードさ:私はアンロードし、各時間のタイルのすべてを再ロードのパフォーマンスへの影響を心配していませんよ。私は一度に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