どっとねっとふぁん

C# Tips And Samples
in 検索

03.Windowの表示位置を変えてみる(イベントの利用)

最新の投稿は、投稿日時: 06-24-2005, 11:16 午前 投稿者: ono です。スレッドには 0 件の返答があります。
投稿のソート: 前へ 次へ
  •  06-24-2005, 11:16 午前 75

    03.Windowの表示位置を変えてみる(イベントの利用)

    HelloWorldプログラムを画面の右上すみに表示してみましょう。
    FormのTopとLeftプロパティを0に設定すればよいはず。。。
    -------------------------------------------------------
    using System;
    using System.Windows.Forms;
    
    class HelloWorld : Form
    {
        public static void Main()
        {
            Application.Run(new HelloWorld());
        }
    
        public HelloWorld()
        {
            this.Top = 0;
            this.Left = 0;
        }
    }
    
    -------------------------------------------------------
    と、やってみたのですが、これだとWindowは中途半端な位置に表示されます。
    どうやら、Windowのインスタンスが生成されてからじゃないと位置の設定をしてもその設定が反映されないようです。
    さて、どうしましょうか。。。

    Windowが表示される瞬間に位置を設定することにしましょう。
    Formでは表示される直前にLoadというイベントが発生します。このイベントが発生したときにプロパティの設定をすればいいはずです。
    -------------------------------------------------------
    using System;
    using System.Windows.Forms;
    
    class HelloWorld : Form
    {
        public static void Main()
        {
            Application.Run(new HelloWorld());
        }
    
        // イベントから呼び出されるメソッド
        private void HW_Load(object s, EventArgs e)
        {
            this.Top = 0;
            this.Left = 0;
        }
    
        public HelloWorld()
        {
            // タイトルの設定
            this.Text = "Hello World!";
            // イベントの追加
            this.Load += new EventHandler(this.HW_Load);
        }
    }
    
    -------------------------------------------------------
    イベントを利用する際には、上記のようにイベントで呼び出されるメソッドを定義しておいて、そのメソッドをイベントに登録すればOKです。なお、このメソッドの定義の記述はコンストラクタの下になっても問題ありません。
    イベント毎に登録できるイベントハンドラの型が決まってますので、ドキュメントで調べて必要な型を利用しましょう。
    また、イベントハンドラの型によって、イベントで呼び出されるメソッドがどのような引数を持たなければいけないかが決まってしまいます。メソッドはイベントハンドラが持つのと同じ引数を受け取る必要があるからです。


    追記:

    StartPositionプロパティをきちんと設定すれば、指定したTopとLeftの位置にWindowが表示されることがわかりました。
    -------------------------------------------------------
    using System;
    using System.Windows.Forms;
    
    class HelloWorld : Form
    {
        public static void Main()
        {
            Application.Run(new HelloWorld());
        }
    
        public HelloWorld()
        {
            this.Top = 0;
            this.Left = 0;
            this.StartPosition = FormStartPosition.Manual;
        }
    }
    
    -------------------------------------------------------
    これだけで良かったんですね(^^;
    まぁ、ここではイベントの説明をしてる、ということで情報を追記しておくだけにします。


    あおい情報システム株式会社
     小野修司(どっとねっとふぁん)
RSS ニュースフィードで参照
SkinName:iroha_CS2
Powered by Community Server, by Telligent Systems