C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■88470 / )  コントロールを自然に動かすには??
□投稿者/ 熊さん (1回)-(2018/09/02(Sun) 22:41:45)

分類:[.NET 全般] 

NumericUpDownを使って、
PictureBoxのサイズを動かしたいと考えています。

NumericUpDown1.Value
に0〜1までの値が入っているとして、


    Private Sub NumericUpDown1_ValueChanged(sender As Object, e As EventArgs) Handles NumericUpDown1.ValueChanged

        PictureBox1.Top = 100 + CInt(500 * (1 - NumericUpDown1.Value) * 0.5)
        PictureBox1.Height = CInt(500 * NumericUpDown1.Value)

    End Sub

のようにして、
サイズを変更するコードを書きました。
しかし、この方法だと、
PictureBoxの位置をずらした後に、サイズを変更するコードとなっているため、
一瞬だけ、PictureBoxが移動したのが見えてしまい、
非常に不格好です。

そのため、


        Me.SuspendLayout()

        PictureBox1.Top = 100 + CInt(500 * (1 - NumericUpDown1.Value) * 0.5)
        PictureBox1.Height = CInt(500 * NumericUpDown1.Value)

        Me.ResumeLayout(False)

のように、コントロールの外観を変更している間
フォームが描画されないようにしてみたのですが、
やはり、変化はなく、PictureBoxの移動が目に見えてしまいます。

        Me.ResumeLayout(False)

の前に
Thread.Sleep(1000)
を入れて、動作を確認してみたのですが、
どうも
 Me.SuspendLayout()
がうまく機能しておらず、
Me.ResumeLayout(False)
に入る前に、描画されてしまっているように思います。

一体、どうすれば、コントロールの動きを同時に行うことができますか?


返信 編集キー/


管理者用

- Child Tree -