UPDATE: が、私はそれが関連するとは思わなかったので、私はまたMetroTabControl
を使用していたことを言及しませんでした。しかし、私はもう少しテストをしましたが、私の結果は以下の通りです。私は自分の質問に対する答えとしてこれを掲示します。MetroPanelのスクロール位置
- 問題を引き起こしている
MetroPanel
は、私は、問題のあるボタンとビオラと同じタブに異なるMetroPanel
を入れ
それを更新ボタンとは別のタブにある、このパネルは完全にうまく働きました。元のMetroPanel
を削除し、別のタブページで再作成しました。これは問題を修正したようです。どういうわけか分かりませんが、そこにはあります。これは状況です
:
オリジナルテキストデニス・マグノによって
MetroModernUI
パッケージ、1.4.0をtrueに設定MetroForm
、AutoScroll
に ソリューションMetroPanel
にインストールされています水平を処理する タイルMetroTiles
は、指定された設定に基づいて実行時に作成されますuration 構成が変更され
- は、すべてのタイルがアンロードと
注意をリロードさ:私はアンロードし、各時間のタイルのすべてを再ロードのパフォーマンスへの影響を心配していませんよ。私は一度に10以上を必要とするとは予想していません。
問題:水平スクロールバーがずっとパネルの右側に配置され、そしてMetroTile
を除去し、リセットしない 。これにより、スクロール位置が実際のスクロール可能領域の外になるようになります。これによりフリッカーが発生し、私のMetroTiles
は実際には表示されません。私は関連するスクロールプロパティで考えることができるすべてを試しましたが、私は迷っています。次のスニペットでは、AutoScrollPosition
とHorizontalScroll.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;
}