From a89c1e41140d42fe511dc32ea22581dcdd385b16 Mon Sep 17 00:00:00 2001 From: Kazuhiro Fujieda Date: Sat, 27 Oct 2018 21:21:38 +0900 Subject: [PATCH] =?utf8?q?=E4=B8=80=E8=A6=A7=E3=81=AE=E5=88=86=E9=A1=9E?= =?utf8?q?=E3=81=A7=E7=A8=AE=E5=88=A5=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=97?= =?utf8?q?=E3=81=A6=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC=E3=83=AB=E3=81=99?= =?utf8?q?=E3=82=8B=E3=81=A8=E7=A8=AE=E5=88=A5=E3=81=8C=E6=AE=8B=E3=82=8B?= =?utf8?q?=E3=81=AE=E3=82=92=E7=9B=B4=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KancolleSniffer/View/ShipListPanel.cs | 45 +++++++++++------------------------ 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/KancolleSniffer/View/ShipListPanel.cs b/KancolleSniffer/View/ShipListPanel.cs index ee35841..68354e7 100644 --- a/KancolleSniffer/View/ShipListPanel.cs +++ b/KancolleSniffer/View/ShipListPanel.cs @@ -266,12 +266,6 @@ namespace KancolleSniffer.View CreateRepairLabels(i); CreateShipLabels(i); } - for (var i = 0; i * LineHeight < Height; i++) - { - _labelPanelList[i].Visible = InShipStatus(_mode); - _groupingPanelList[i].Visible = _mode == "分類"; - _repairPanelList[i].Visible = _mode == "修復"; - } SetupScrollBar(); } @@ -338,6 +332,7 @@ namespace KancolleSniffer.View panel.Controls.AddRange(cb); // ReSharper restore CoVariantArrayConversion Controls.Add(panel); + var unused = panel.Handle; // create handle foreach (var label in labels) { label.Scale(); @@ -401,6 +396,7 @@ namespace KancolleSniffer.View // ReSharper disable once CoVariantArrayConversion panel.Controls.AddRange(labels); Controls.Add(panel); + var unused = panel.Handle; // create handle foreach (var label in labels) { label.Scale(); @@ -461,6 +457,7 @@ namespace KancolleSniffer.View // ReSharper disable once CoVariantArrayConversion panel.Controls.AddRange(labels); Controls.Add(panel); + var unused = panel.Handle; // create handle foreach (var label in labels) { label.Scale(); @@ -477,6 +474,9 @@ namespace KancolleSniffer.View { for (var i = 0; i < (Height + LineHeight - 1) / LineHeight; i++) { + HidePanels(i); + if (i + ScrollBar.Value >= _shipList.Length) + continue; if (InShipStatus(_mode)) SetShipStatus(i); if (_mode == "分類") @@ -486,16 +486,15 @@ namespace KancolleSniffer.View } } + private void HidePanels(int i) + { + _labelPanelList[i].Visible = _groupingPanelList[i].Visible = _repairPanelList[i].Visible = false; + } + private bool InShipStatus(string mode) => Array.Exists(new[] {"全艦", "A", "B", "C", "D"}, x => mode == x); private void SetShipStatus(int i) { - var panel = _labelPanelList[i]; - if (i + ScrollBar.Value >= _shipList.Length) - { - panel.Visible = false; - return; - } var s = _shipList[i + ScrollBar.Value]; var labels = _labelList[i]; if (s.Level == 1000) // 艦種の表示 @@ -509,7 +508,7 @@ namespace KancolleSniffer.View labels[3].SetExpToNext(s); labels[4].SetName(s, ShipNameWidth.ShipList); labels[5].SetFleet(s); - panel.Visible = true; + _labelPanelList[i].Visible = true; } private void SetShipType(int i) @@ -528,18 +527,10 @@ namespace KancolleSniffer.View private void SetGrouping(int i) { - var panel = _groupingPanelList[i]; - if (i + ScrollBar.Value >= _shipList.Length) - { - panel.Visible = false; - _labelPanelList[i].Visible = false; - return; - } var s = _shipList[i + ScrollBar.Value]; var labels = _groupingLabelList[i]; if (s.Level == 1000) { - panel.Visible = false; SetShipType(i); return; } @@ -549,22 +540,14 @@ namespace KancolleSniffer.View var cb = _checkBoxesList[i]; for (var j = 0; j < cb.Length; j++) cb[j].Checked = GroupSettings[j].Contains(s.Id); - panel.Visible = true; + _groupingPanelList[i].Visible = true; } private void SetRepairList(int i) { - var panel = _repairPanelList[i]; - if (i + ScrollBar.Value >= _shipList.Length) - { - panel.Visible = false; - _labelPanelList[i].Visible = false; - return; - } var s = _shipList[i + ScrollBar.Value]; if (s.Level == 1000) { - panel.Visible = false; SetShipType(i); return; } @@ -575,7 +558,7 @@ namespace KancolleSniffer.View labels[3].Text = s.RepairTimePerHp.ToString(@"mm\:ss"); labels[4].SetName(s, ShipNameWidth.RepairListFull); labels[5].SetFleet(s); - panel.Visible = true; + _repairPanelList[i].Visible = true; } public event Action HpLabelClick; -- 2.11.0