OSDN Git Service

一覧の分類で種別を表示してスクロールすると種別が残るのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 27 Oct 2018 12:21:38 +0000 (21:21 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 29 Oct 2018 11:20:39 +0000 (20:20 +0900)
KancolleSniffer/View/ShipListPanel.cs

index ee35841..68354e7 100644 (file)
@@ -266,12 +266,6 @@ namespace KancolleSniffer.View
                 CreateRepairLabels(i);\r
                 CreateShipLabels(i);\r
             }\r
-            for (var i = 0; i * LineHeight < Height; i++)\r
-            {\r
-                _labelPanelList[i].Visible = InShipStatus(_mode);\r
-                _groupingPanelList[i].Visible = _mode == "分類";\r
-                _repairPanelList[i].Visible = _mode == "修復";\r
-            }\r
             SetupScrollBar();\r
         }\r
 \r
@@ -338,6 +332,7 @@ namespace KancolleSniffer.View
             panel.Controls.AddRange(cb);\r
             // ReSharper restore CoVariantArrayConversion\r
             Controls.Add(panel);\r
+            var unused = panel.Handle; // create handle\r
             foreach (var label in labels)\r
             {\r
                 label.Scale();\r
@@ -401,6 +396,7 @@ namespace KancolleSniffer.View
             // ReSharper disable once CoVariantArrayConversion\r
             panel.Controls.AddRange(labels);\r
             Controls.Add(panel);\r
+            var unused = panel.Handle; // create handle\r
             foreach (var label in labels)\r
             {\r
                 label.Scale();\r
@@ -461,6 +457,7 @@ namespace KancolleSniffer.View
             // ReSharper disable once CoVariantArrayConversion\r
             panel.Controls.AddRange(labels);\r
             Controls.Add(panel);\r
+            var unused = panel.Handle; // create handle\r
             foreach (var label in labels)\r
             {\r
                 label.Scale();\r
@@ -477,6 +474,9 @@ namespace KancolleSniffer.View
         {\r
             for (var i = 0; i < (Height + LineHeight - 1) / LineHeight; i++)\r
             {\r
+                HidePanels(i);\r
+                if (i + ScrollBar.Value >= _shipList.Length)\r
+                    continue;\r
                 if (InShipStatus(_mode))\r
                     SetShipStatus(i);\r
                 if (_mode == "分類")\r
@@ -486,16 +486,15 @@ namespace KancolleSniffer.View
             }\r
         }\r
 \r
+        private void HidePanels(int i)\r
+        {\r
+            _labelPanelList[i].Visible = _groupingPanelList[i].Visible = _repairPanelList[i].Visible = false;\r
+        }\r
+\r
         private bool InShipStatus(string mode) => Array.Exists(new[] {"全艦", "A", "B", "C", "D"}, x => mode == x);\r
 \r
         private void SetShipStatus(int i)\r
         {\r
-            var panel = _labelPanelList[i];\r
-            if (i + ScrollBar.Value >= _shipList.Length)\r
-            {\r
-                panel.Visible = false;\r
-                return;\r
-            }\r
             var s = _shipList[i + ScrollBar.Value];\r
             var labels = _labelList[i];\r
             if (s.Level == 1000) // 艦種の表示\r
@@ -509,7 +508,7 @@ namespace KancolleSniffer.View
             labels[3].SetExpToNext(s);\r
             labels[4].SetName(s, ShipNameWidth.ShipList);\r
             labels[5].SetFleet(s);\r
-            panel.Visible = true;\r
+            _labelPanelList[i].Visible = true;\r
         }\r
 \r
         private void SetShipType(int i)\r
@@ -528,18 +527,10 @@ namespace KancolleSniffer.View
 \r
         private void SetGrouping(int i)\r
         {\r
-            var panel = _groupingPanelList[i];\r
-            if (i + ScrollBar.Value >= _shipList.Length)\r
-            {\r
-                panel.Visible = false;\r
-                _labelPanelList[i].Visible = false;\r
-                return;\r
-            }\r
             var s = _shipList[i + ScrollBar.Value];\r
             var labels = _groupingLabelList[i];\r
             if (s.Level == 1000)\r
             {\r
-                panel.Visible = false;\r
                 SetShipType(i);\r
                 return;\r
             }\r
@@ -549,22 +540,14 @@ namespace KancolleSniffer.View
             var cb = _checkBoxesList[i];\r
             for (var j = 0; j < cb.Length; j++)\r
                 cb[j].Checked = GroupSettings[j].Contains(s.Id);\r
-            panel.Visible = true;\r
+            _groupingPanelList[i].Visible = true;\r
         }\r
 \r
         private void SetRepairList(int i)\r
         {\r
-            var panel = _repairPanelList[i];\r
-            if (i + ScrollBar.Value >= _shipList.Length)\r
-            {\r
-                panel.Visible = false;\r
-                _labelPanelList[i].Visible = false;\r
-                return;\r
-            }\r
             var s = _shipList[i + ScrollBar.Value];\r
             if (s.Level == 1000)\r
             {\r
-                panel.Visible = false;\r
                 SetShipType(i);\r
                 return;\r
             }\r
@@ -575,7 +558,7 @@ namespace KancolleSniffer.View
             labels[3].Text = s.RepairTimePerHp.ToString(@"mm\:ss");\r
             labels[4].SetName(s, ShipNameWidth.RepairListFull);\r
             labels[5].SetFleet(s);\r
-            panel.Visible = true;\r
+            _repairPanelList[i].Visible = true;\r
         }\r
 \r
         public event Action HpLabelClick;\r