AQUA's .NET 奮闘記

Hobby Programmer の成長記録

目次

ニュース

  • わんくま同盟
    わんくま同盟
  • わんくま掲示板
    C# と VB.NET の質問掲示板
スカウター : AQUA's .NET 奮闘記

日記カテゴリ

記事カテゴリ

書庫

Blog 利用状況

わんくま同盟 AWARD

わんくま同盟 影

Zオーダーで遊んでみました。

 神風回答 じゃんぬさんにアドバイスを頂き、ある課題が即座に解決したのですが、そのアドバイスの中にあるZOrderによるコントロールの動きが興味深かったので、非常に簡単なコードを踏まえ、Zオーダーの動きを確認してみました。

ツッコミ 大募集中です。

【 内容 】

 Z オーダーの変更に伴う、コントロールの視覚効果の変移と出力結果の単純な確認。

【 検証 】

用意するフォーム及びコントロール
コントロールの種類 プロパティ プロパティの値
Form Name Form1 ( 初期値 )
Size 300, 300 ( 初期値 )
Text Form1 ( 初期値 )
Button Name Button1 ( 初期値 )
Dock Top
Size 292, 64
Text Button1 ( 初期値 )
Button Name Button2 ( 初期値 )
Dock Left
Size 75, 202
Text Button2 ( 初期値 )
Button Name Button3 ( 初期値 )
Dock Bottom
Size 292, 64
Text Button3 ( 初期値 )
Button Name Button4 ( 初期値 )
Dock Right
Size 75, 202
Text Button4 ( 初期値 )
Button Name Button5 ( 初期値 )
Dock Fill
Size --- ?( 未設定 )
Text Button5 ( 初期値 )

※ 今回の検証で、特に必要なプロパティの変更を赤色太字で表記してあります。

 

Visual Basic 2005 コード ( 未確認ですが Visual Basic 2002/2003 動作可能と思います。)

Public Class Form1

    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click, Button5.Click

        ' Form1のコントロールコレクションからコントロールを取得
        For Each MyButtons As Control In Me.Controls
            ' クリックしたButtonコントロールのZオーダーを最背面に移動
            DirectCast(sender, Button).SendToBack()
            ' Z オーダーの変更結果を出力
            Console.WriteLine(MyButtons.Name)
            Next

    End Sub
End Class

 

【 検証結果 】

1・ Button1 をクリックした時の動作結果

      画面        :                   

      出力結果 : Button5
                         Button4
                         Button3
                         Button2
                         Button1

2・ Button2 をクリックした時の動作結果

      画面         :                   

      出力結果 : Button5
                         Button4
                         Button3
                         Button1
                         Button2

3・ Button3 をクリックした時の動作結果

      画面         :                   

      出力結果 : Button5
                         Button4
                         Button1
                         Button2
                         Button3

4・ Button4 をクリックした時の動作結果

      画面         :                   

      出力結果 : Button5
                         Button1
                         Button2
                         Button3
                         Button4

5・ Button5 をクリックした時の動作結果

      画面         :                   

      出力結果 : Button1
                         Button2
                         Button3
                         Button4
                         Button5

※ これらの検証はButton1~Button5までを順番にクリックした時の結果です。任意のButtonコントロールをクリックする時の出力される結果は、クリックする順番により上記のようにはならない場合があります。

【 まとめ 】

今回、プログラムコード上でコントロールのZオーダーを最背面に移動するために使ったメソッドは SendToBack メソッドである。

最前面に移動した場合は BringToFront メソッドを使用する。

※ コントロールを親のZオーダーで更新するための UpdateZOrder メソッドもあるが今回は検証していない。

 

イベントを監視し、Zオーダーをプログラムコードで変更することで、視覚効果にも興味深い変化が確認できた。

複数のPanelコントロールなどを使用したインターフェースを作成する時など、これらの動きを意識して見るとまた一味違ったアプリケーションが構築できそうである。

投稿日時 : 2007年3月14日 12:48

Feedback

# re: Zオーダーで遊んでみました。 2007/03/14 15:12 ぽぴ王子

s/疾風回答じゃんぬ/神風回答じゃんぬ/

参考リンク
http://d.hatena.ne.jp/keyword/%BF%C0%C9%F7%B2%F8%C5%F0%A5%B8%A5%E3%A5%F3%A5%CC

疾風はこっち(違
http://d.hatena.ne.jp/keyword/%B6%E4%B2%CF%BC%C0%C9%F7%A5%B5%A5%B9%A5%E9%A5%A4%A5%AC%A1%BC

あるいはこっち
http://d.hatena.ne.jp/keyword/%bc%c0%c9%f7%c5%c1%c0%e2%c6%c3%b9%b6%a4%ce%c2%f3

?!

# re: Zオーダーで遊んでみました。 2007/03/14 15:22 アクア

あ、しまった!
気付いていたのに確認&修正し忘れてた。T-T

じゃんぬさん ごめんなさい。
ぽぴ王子さん ありがとうございます。

にしても、疾風に関する2つのリンクはなんともコメントしづらい…

# re: Zオーダーで遊んでみました。 2007/03/29 9:29 じゃんぬねっと

ネタでミスって謝られても...w

# re: Zオーダーで遊んでみました。 2007/04/01 14:32 アクア

まぁ、そこは笑ってスルーという事で…^^;

# re: Zオーダーで遊んでみました。 2007/04/12 9:30 じゃんぬねっと

ちょwww ぶっこみの拓かよwwwwwww (今気付いた)
神風怪盗ジャンヌ -> 神風回答じゃんぬ ね。

言いだしっぺは、確かシャノンさん。

タイトル  
名前  
Url
コメント