tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルSendToBack、BringToFrontが期待通りの動きにならない
記事No6536
投稿日: 2007/11/12(Mon) 11:50
投稿者レイン
初めまして、いつも拝見させて頂いております。

・環境
 VB2005
  XP SP2

・現状
 ZOrderの代わりになる物を探していた所
 SendToBack、BringToFrontがある事が分かりました。
 いくつかのピクチャーボックスをコード上で配置し、
 SendToBack、BringToFrontで期待通りの動きになりません。
 ・下記再現コードで赤色を付けたピクチャーボックス(pic2)を
  最前面に表示したかった。

・質問
 赤色を付けたピクチャーボックスをZOrder 0(最前面)の状態にするには
 どうしたらいいでしょうか?

宜しくお願いします。m(_ _)m

Public Class Form1
    '1
    Private pic1(0) As System.Windows.Forms.PictureBox
    '2
    Private pic2(0) As System.Windows.Forms.PictureBox

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.pic1(0) = New System.Windows.Forms.PictureBox
        With Me.pic1(0)
            .Size = New Size(50, 50)
            .Left = 50
            .Top = 50
            '青色を付ける
            .BackColor = Color.Blue
      '最背面に表示する
            .SendToBack()
            .Visible = True
        End With
        Me.Controls.AddRange(Me.pic1)

        Me.pic2(0) = New System.Windows.Forms.PictureBox
        With Me.pic2(0)
            .Size = New Size(50, 50)
            .Left = 75
            .Top = 75
      '赤色を付ける
            .BackColor = Color.Red
      '最前面に表示する
            .BringToFront()
            .Visible = True
        End With
        Me.Controls.AddRange(Me.pic2)

    End Sub
End Class

[ツリー表示へ]
タイトルRe: SendToBack、BringToFrontが期待通りの動きにならない
記事No6541
投稿日: 2007/11/12(Mon) 14:25
投稿者Hongliang
コントロールの前後の並びは、Add/AddRange した順番になるのが基本です。
逆に言うと、Add/AddRange するまではそのコントロールの順番は決められません。
順番が決まらないうちから前後ろがどうこう言ってもスルーされます。
一旦決まってから、「あ、やっぱりこれが最前面ね」なら有効です。

[ツリー表示へ]
タイトル【解決】SendToBack、BringToFrontが期待通りの動きにならない
記事No6543
投稿日: 2007/11/12(Mon) 14:47
投稿者レイン
> 一旦決まってから、「あ、やっぱりこれが最前面ね」なら有効です。

Hongliang 様
ありがとうございます。

Me.Controls.AddRange(Me.pic2)の後に
Me.pic2(0).BringToFront()を付ける事で理想の動きとなりました。

[ツリー表示へ]