OSDN Git Service

PictureBox.Visible の値の変更に何故か時間の掛かる問題の回避
authorKimura Youichi <kim.upsilon@bucyou.net>
Sat, 12 Jan 2013 18:30:48 +0000 (03:30 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 12 Jan 2013 18:43:09 +0000 (03:43 +0900)
OpenTween.Tests/TweetThumbnailTest.cs
OpenTween/TweetThumbnail.cs

index 2bf7033..5944bb1 100644 (file)
@@ -84,7 +84,6 @@ namespace OpenTween
                 Assert.That(picbox.SizeMode, Is.EqualTo(PictureBoxSizeMode.Zoom));
                 Assert.That(picbox.WaitOnLoad, Is.False);
                 Assert.That(picbox.Dock, Is.EqualTo(DockStyle.Fill));
-                Assert.That(picbox.Visible, Is.False);
 
                 picbox.Dispose();
             }
@@ -124,6 +123,8 @@ namespace OpenTween
                     num++;
                 }
 
+                Assert.That(thumbbox.Controls, Is.EquivalentTo(new Control[]{ thumbbox.scrollBar }.Concat(thumbbox.pictureBox)));
+
                 Assert.That(thumbbox.scrollBar.Minimum, Is.EqualTo(0));
                 Assert.That(thumbbox.scrollBar.Maximum, Is.EqualTo(count));
             }
index 4609907..5a008c4 100644 (file)
@@ -89,7 +89,6 @@ namespace OpenTween
                             cancelToken.ThrowIfCancellationRequested();
                         }
 
-                        this.pictureBox[0].Visible = true;
                         this.scrollBar.Maximum = thumbnails.Count - 1;
 
                         if (thumbnails.Count > 1)
@@ -147,6 +146,7 @@ namespace OpenTween
             for (int i = 0; i < count; i++)
             {
                 var picbox = CreatePictureBox("pictureBox" + i);
+                picbox.Visible = (i == 0);
                 picbox.DoubleClick += this.pictureBox_DoubleClick;
 
                 this.Controls.Add(picbox);
@@ -164,7 +164,6 @@ namespace OpenTween
                 SizeMode = PictureBoxSizeMode.Zoom,
                 WaitOnLoad = false,
                 Dock = DockStyle.Fill,
-                Visible = false,
             };
         }
 
@@ -190,15 +189,29 @@ namespace OpenTween
 
         private void scrollBar_ValueChanged(object sender, EventArgs e)
         {
+            this.SuspendLayout();
             for (var i = 0; i < this.pictureBox.Count; i++)
             {
                 var picbox = this.pictureBox[i];
+                Console.WriteLine(this.scrollBar.Value + ", " + i);
 
                 if (this.scrollBar.Value == i)
                     picbox.Visible = true;
                 else
                     picbox.Visible = false;
             }
+            this.ResumeLayout(false);
+        }
+
+        private void ShowPictureBox(int index)
+        {
+            foreach (Control control in this.Controls)
+            {
+                if (control is PictureBox)
+                    this.Controls.Remove(control);
+            }
+
+            this.Controls.Add(this.pictureBox[index]);
         }
 
         private void pictureBox_DoubleClick(object sender, EventArgs e)