【C#】Windows.Forms의 이벤트 순서

3698 단어 .NETFrameworkC#

00. 소개



Windows Form의 이벤트 실행 순서는 아래에 설명되어 있습니다.
Windows Forms 이벤트 순서
하지만 안드로이드의 Lifecycle처럼 그림으로 한눈에 알 수 있도록되어 있지 않습니다.
그러므로, 확인을 하면 그림을 일으켜 갑니다.

01. 환경



확인에 사용한 환경입니다.



버전


Windows 10 Pro
1709년

Visual Studio Community 2017
15.6.5

.NET Framework
4.6.1


02. 그림





그림의 wsd

PlantUML은 버전 1.2018.3 사용
@startuml
title Windows.Formsのイベント順序

start

->アプリ起動;
:Control.HandleCreated;
note left
    コントロールに対してハンドルが作成されると発生します。
end note

:Control.BindingContextChanged;
note left
    BindingContext プロパティの値が
    変更された場合に発生します。
end note

:Form.Load;
note left
    フォームが初めて表示される直前に発生します。
end note

:Control.VisibleChanged;
note left
    Visible プロパティの値が
    変更された場合に発生します。
end note

:★1;

:Form.Activated;
note left
    フォームがコード内またはユーザーの操作によって
    アクティブになると発生します。
end note

if (初めて表示する) then (Yes)
    :Form.Shown;
    note left
        フォームが初めて表示されるたびに発生します。
    end note
else (No)
endif

:イベント関係;

split
    ->フォーカスを失う;
    :Form.Deactivate;
    note left
        フォームがフォーカスを失い
        アクティブでなくなると発生します。
    end note

    ->フォーカスを得る;
    :★1へ;
    detach
split again
    ->アプリ終了;
    :Form.FormClosing;
    note right
        フォームが閉じる前に発生します。
    end note

    :Form.FormClosed;
    note right
        フォームが閉じた後に発生します。
    end note

    :Form.Deactivate;
    note right
        フォーカスを失った際と同じイベント
    end note

    :Control.HandleDestroyed;
    note right
        コントロールのハンドルが
        破棄されているときに発生します。
    end note

    stop
end split

partition イベント関係 {
    partition マウスイベント {
        :MouseEnter;
        note left
            マウス ポインターによってコントロールが入力されると発生します。
            (要はマウスポインタがフォーム外から入ってくると発生)
        end note
        detach

        :MouseMove;
        note left
            マウス ポインターがコントロール上を移動すると発生します。
        end note
        detach

        :MouseHover;
        note left
            マウスポインタがコントロール上に重なると発生する
            (マウスポインタの動きが止まったら?)
        end note
        detach

        :MouseDown;
        note left
            マウス ポインターがコントロール上にあり、
            マウス ボタンがクリックされると発生します。
        end note

        :MouseUp;
        note left
            マウス ポインターがコントロール上にあり、
            マウス ボタンが離されると発生します。
        end note
        detach
    }

    partition キーイベント {
        repeat
            ->キーを押している間繰り返される;
            :PreviewKeyDown;
            note left
                このコントロールにフォーカスがあるときにキーが押された場合、
                KeyDown イベントの前に発生します。
            end note

            :KeyDown;
            note left
                コントロールにフォーカスがあるときにキーが押されると発生します。
            end note

            :KeyPress;
            note left
                コントロールにフォーカスがあるときに、
                文字、 スペース、または Backspace キーが押された場合に発生します。
            end note
        repeat while()

        :KeyUp;
        note left
            コントロールにフォーカスがあるときにキーが離されると発生します。
        end note
    }
}

@enduml


98. 참고



Windows Forms 이벤트 순서 | htps : // / cs. 미 c 로소 ft. 코 m / 그럼 jp / t t t / f 라메를 rk / uan fu rms / r r r f e ゔ ts

99. 갱신 내역




날짜
내용


2018/05/01

좋은 웹페이지 즐겨찾기