memo

プログラミング備忘録

【C#】画面Open/Close直後の処理

画面表示した直後、切り替えた(非表示)した直後に発生するイベントについて調べてみました。

やりたいこと
ユーザーコントロールを切り替えた直後(Visible = true/false)に処理を行う。

画面表示(Visible)する度にShownイベントやCloseイベントが発生すれば、処理楽なのになーと何となく思ったのですが、
Visial C#でユーザーコントロールを使用する場合、私は見つけられませんでした。

代わりに、VisibleChangedイベントがあったのでこれを使おうと思います。

f:id:shinopikapi:20181103005936p:plain


関数セット
ユーザーコントロールのデザイン画面に移動
 →プロパティ
  →上アイコンの雷マーク
   →イベント一覧表示されるので、選択

        private void Us_pika1_VisibleChanged(object sender, EventArgs e)
        {

        }

デバッグで出力する場合は、以下を関数の中に記載。

        System.Diagnostics.Debug.WriteLine("debug");

デバッグとして、イベントの中に以下のような処理を記載。

            if (this.Visible)
            {
                // true
                System.Diagnostics.Debug.WriteLine("open");
            }
            else
            {
                // false
                System.Diagnostics.Debug.WriteLine("close");
            }

ユーザーコントロールを表示、非表示して画面を切り替える方法については、
先日の簡単に備忘録としてまとめましたが、
shinopikapi.hateblo.jp

ユーザーコントロール1を表示するときは、もう一方のユーザーコントロール2を非表示に、
ユーザーコントロール2を表示するときはこの逆、
となるよう作成していました。

なので、上のソースをイベントの中に記載したら
画面が表示したときは当然trueの方を通って、
切り替えたときはfalseの方を通りました。

特定の画面だけ表示したいときにやりたい処理を書いて、
非表示にしたときはメモリを解放、といったことができるかなと思いました。

やったことは簡単なのですが、
私がC#知らな過ぎてこれは普通のやり方なのか……?
と思いながらやってます。



公式
方法 : デザイナーを使用してイベント ハンドラーを作成する