ダサいけど便利な.NETのFormを解剖してみる①~起動させてみる~

 単なる出来心でWinFormアプリを解剖してみることに。なお、Formとは Form クラス (System.Windows.Forms) のことを指します。↓みたいなやつですね。

f:id:tadanoteihen:20171206184856p:plain

Windowsの使用者なら、似た画面を見たことがあると思います。これを使うと、手軽にデスクトップアプリを作ることができるので非常に便利。特にVisual Studioという開発環境を併用すると、ちょっとしたツールならあっという間に作れるので、プログラミング初心者にもおすすめできます。

とりあえず作成・起動してみる

 今回は解剖ということで、最初はVisualStudioを使わずに作ってみましょう。まずは画像から。言語はVBを選択。

f:id:tadanoteihen:20171206185556p:plain

Imports System.Windows.Forms

Public Class Class1

    Shared Sub Main()
        Application.Run(New Form)
    End Sub

End Class

f:id:tadanoteihen:20171206190034p:plain

vbc form.vb

f:id:tadanoteihen:20171206190328p:plain

f:id:tadanoteihen:20171206191122p:plain

こんな感じで、のっぺらぼーなWinFormが起動します。意外とあっという間ですね。では解説ということで、まずはソースコードを見てみましょう。.NETのエントリーポイント(プログラムが開始するポイント)は、Mainメソッドです。Class内で宣言すればよいし、VBであればModule内で宣言してもよいです。画面の表示は「Application.Run(New Form)」と一行書くだけ。コンパイラVBならばvbc.exe、C#ならばcsc.exe。コンパイルすると同じフォルダにEXEファイルが出来上がるので、ダブルクリックすれば起動します。

項目を追加してみる

 もうちょっとVisual Studioを使わず頑張ってみよう‥・。まっさらな画面に、「なういぜWinForm」と表示させてみます。要は記事の一番最初に乗せたやつですね。ソースコードから入ると、、、

Imports System.Windows.Forms
Imports System.Drawing.Point

Public Class WinFormKidou

    Shared Sub Main()
        Dim winForm As New winForm
        winForm.nauiLabel = New System.Windows.Forms.Label
        winForm.nauiLabel.Text = "なういぜWinForm"
        winForm.nauiLabel.Name = "NauiLabel"
        winForm.nauiLabel.Location = New System.Drawing.Point(75, 75)
        winForm.nauiLabel.Size = New System.Drawing.Size(100, 100)
        winForm.nauiLabel.AutoSize = True
        winForm.Controls.Add(winForm.nauiLabel)
        Application.Run(winForm)
    End Sub

End Class

Public Class winForm
    Inherits Form

    Public nauiLabel As Label

End Class

まずは下の方で宣言しているwinFormクラスを見てみましょう(ミスって頭文字を小文字にしたけど気にしない)。これは標準のFormクラスを継承して、フィールドを一つ追加しているだけ。追加したのはLabelで、これが「なういぜWinForm」となるわけです。 つぎにWinFormKidouクラス内のmainメソッドを見てみしょう。下で宣言しているwinFormをインスタンス化して、内部のフィールド「nauiLael」に新しいLabelクラスのインスタンスを渡しています。続けてnauiLabelのプロパティを設定し、最後にApplication.Runで画面を起動しています。なお、nauiLabelをControls.Addしている点に注意。これをしないとラベルが表示されません。

長くなってしまったので一旦閉幕。ひとまずWinFormの1から自力で書くとこんな感じになりました。今後こんな風に1から書き始めることはないでしょうが、一度やってみるのも面白いと思います。Visual Studioでプロジェクト追加して、ドラッグアンドドロップで適当にコントロール(WinFormの部品のこと。文字とか入力フォームとかボタンとか)を配置して作っていくのが普通だし、特に役立つこともありませんが、知っておくとウンチクを後輩に披露できる程度には使えるかもしれません。