OSDN Git Service

艦娘一覧を空にするときに表示がちらつくのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 22 Apr 2017 11:08:33 +0000 (20:08 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 22 Apr 2017 11:08:33 +0000 (20:08 +0900)
KancolleSniffer/ShipListPanel.cs

index 7287917..a594daa 100644 (file)
@@ -49,7 +49,9 @@ namespace KancolleSniffer
 \r
         private void ScrollBarOnValueChanged(object sender, EventArgs eventArgs)\r
         {\r
+            SuspendDrawing();\r
             SetShipLabels();\r
+            ResumeDrawing();\r
         }\r
 \r
         protected override void OnResize(EventArgs ev)\r
@@ -57,8 +59,10 @@ namespace KancolleSniffer
             base.OnResize(ev);\r
             if (_shipList == null || _shipList.Length == 0)\r
                 return;\r
+            SuspendDrawing();\r
             SetupLabels();\r
             SetShipLabels();\r
+            ResumeDrawing();\r
         }\r
 \r
         protected override void OnMouseWheel(MouseEventArgs e)\r
@@ -71,8 +75,26 @@ namespace KancolleSniffer
         {\r
             _mode = mode;\r
             CreateShipList(sniffer, sortOrder, byShipType);\r
+            SuspendDrawing();\r
             SetupLabels();\r
             SetShipLabels();\r
+            ResumeDrawing();\r
+        }\r
+\r
+        [DllImport("user32.dll")]\r
+        public static extern int SendMessage(IntPtr hWnd, int wMsg, bool wParam, IntPtr lParam);\r
+\r
+        private void SuspendDrawing()\r
+        {\r
+            SendMessage(Handle, 11, false, IntPtr.Zero); // WM_SETREDRAW = 11\r
+            SuspendLayout();\r
+        }\r
+\r
+        public void ResumeDrawing()\r
+        {\r
+            ResumeLayout();\r
+            SendMessage(Handle, 11, true, IntPtr.Zero);\r
+            Refresh();\r
         }\r
 \r
         void CreateShipList(Sniffer sniffer, ListForm.SortOrder sortOrder, bool byShipType)\r
@@ -150,7 +172,6 @@ namespace KancolleSniffer
 \r
         private void SetupLabels()\r
         {\r
-            SuspendLayout();\r
             for (var i = _labelList.Count; i * LineHeight < Height; i++)\r
             {\r
                 CreateGroupingComponents(i);\r
@@ -164,7 +185,6 @@ namespace KancolleSniffer
                 _repairPanelList[i].Visible = _mode == "修復";\r
             }\r
             SetupScrollBar();\r
-            ResumeLayout();\r
         }\r
 \r
         private void SetupScrollBar()\r
@@ -339,8 +359,6 @@ namespace KancolleSniffer
 \r
         private void SetShipLabels()\r
         {\r
-            SuspendDrawing();\r
-            SuspendLayout();\r
             for (var i = 0; i < (Height + LineHeight - 1) / LineHeight; i++)\r
             {\r
                 if (InShipStatus(_mode))\r
@@ -350,22 +368,6 @@ namespace KancolleSniffer
                 if (_mode == "修復")\r
                     SetRepairList(i);\r
             }\r
-            ResumeLayout();\r
-            ResumeDrawing();\r
-        }\r
-\r
-        [DllImport("user32.dll")]\r
-        public static extern int SendMessage(IntPtr hWnd, int wMsg, bool wParam, IntPtr lParam);\r
-\r
-        private void SuspendDrawing()\r
-        {\r
-            SendMessage(Handle, 11, false, IntPtr.Zero); // WM_SETREDRAW = 11\r
-        }\r
-\r
-        public void ResumeDrawing()\r
-        {\r
-            SendMessage(Handle, 11, true, IntPtr.Zero);\r
-            Refresh();\r
         }\r
 \r
         private bool InShipStatus(string mode) => Array.Exists(new[] {"全員", "A", "B", "C", "D"}, x => mode == x);\r