C#でWindowsFormアプリケーション(RadioButtonとGroupBox)

フジファブリックの『若者のすべて』を久々に聞いていて、夏の曲なのに冬に聞いてもいい曲だなと感じましたが、志村正彦が亡くなったのはクリスマスイブなんだな、と思うと寂しい感じです。

ということで、今回はC#のWindowsFormアプリケーションについてです。

WindowsFormアプリケーション

.NET frameworkのクラスライブラリの中のsystem.Windows.Formsパッケージにある「Form」というクラスを使うことで、実装できます。

実際に作成してみます。

Visual Studioを起動して、『ファイル』>『新規作成』>『プロジェクト』を選択します。

f:id:ts0818:20161224151239j:plain

『テンプレート』で『Visual C#』を選択し、『Windows フォーム アプリケーション』を選択したら、一番下のほうにある『名前(N):』 や『場所(L):』を適当に決めたら『OK』をクリックします。

f:id:ts0818:20161224151240j:plain

Form1.cs[デザイン]というものが表示された状態になります。

左にあるツールボックス『すべてのWindows フォーム』にあるフォームの部品を、Form1ウィンドウ上にドラッグ&ドロップしていくことでFormを作っていく感じです。f:id:ts0818:20161224151241j:plain

その前にコードの確認をしてみます。『ソリューションエクスプローラー』のForm1.csの上で右クリックし、「コードの表示(C)」を選択します。

f:id:ts0818:20161224151242j:plain

Formクラスを継承したForm1クラスが作成されています。デフォルトの状態なので、Form1クラスにはコンストラクターしかない状態です。

using System.Windows.Formsとパッケージを読み込んでいるので、Formクラスが使えるようになっています。

f:id:ts0818:20161224153454j:plain

 

WindowsFormアプリケーションの構成

プロジェクトの構成は、『ソリューション エクスプローラー』で確認できます。

デフォルトの状態では、クラスが2つあります。

  • Form1.cs
    • Form1.Deziner.cs
    • Form1
  • Program.cs
    • Program

このうち、最終的にアプリの実行をしているのが、Program.csの

static void Main(){}    

というメソッドですが、今回はProgram.csは特に触らない感じです。Form1.csを触っていくことになりますが、Form1.Deziner.csはフォームの部品を追加していくと自動でコードを生成してくれるのですが、特に触りません。

なので、今回はForm1.cs(Form1)ファイルのみを触っていく感じです。

 

Form1.cs[デザイン]にGroupBoxとRadioButtonを追加する

まずは、『ツールボックス』から『Group Box』を選択し、ドラッグ&ドロップでForm1ウィンドウズ上に持ってきます。

f:id:ts0818:20161224161614j:plain

その次は、配置した『GroupBox』の中に『RadioButton』を配置します。

配置した『RadioButton』をCtrl + Vでコピペします。 

f:id:ts0818:20161224162322j:plain

『RadioButton』を4つぐらい配置します。

f:id:ts0818:20161224163013j:plain

 最後に『Button』をドラッグ&ドロップで配置します。

f:id:ts0818:20161224202734j:plain

『プロパティ』のところの稲妻マークみたいなアイコンを選択すると、ボタンに何かしたときのイベントを設定できます。

f:id:ts0818:20161224202734j:plain

『プロパティ』 のところで稲妻マークみたいなアイコンを選択すると、配置した『button1』に何かアクションしたときのイベントを設定できます。

今回は、Clickイベントを設定します。Clickのところに、『button_click』と入力し、Enterキーを押します。

f:id:ts0818:20161224203457j:plain

Form1.cs(Form1)ファイルに、button_clickというメソッドが追加されました。このメソッドの中に処理を記述していきます。

f:id:ts0818:20161224203227j:plain

チェックされたRadioButtonの情報を取得する

GroupBoxの中で、どのRadioButtonがチェックされているか調べることが出来るみたいです。button_click( )メソッドの中に記述していきます。

private void button_click(object sender, EventArgs e)
        {
            // GroupBox1の中のRadioButtonでチェックされているものを取得
            var RadioGroup = groupBox1.Controls.OfType<radiobutton>().SingleOrDefault(rb => rb.Checked == true);
            // RadioButtonが押されていない場合
            if (RadioGroup == null)
            {
                Console.WriteLine("RadioButtonがチェックされていません。");
            }
            // RadioButton押された場合
            else
            {
                Console.WriteLine(RadioGroup.Text);
            }
        }    

 コードを記述したら、実際に実行してみます。『開始』というボタンをクリックします。(『デバッグ』の「デバッグで開始」「デバッグなしで開始」でも実行できます。)

f:id:ts0818:20161224210701j:plain

実際にForm1が表示されるので、radioButtonにチェックをつけてbutton1をクリックすると『出力』というところに選択されたRadioButtonのTextの値(『プロパティ』で設定・変更することができます。)が表示されます。

f:id:ts0818:20161224205534j:plain

⇩  下記サイトを参考にさせていただきました。

【C#の小技】ラジオボタンのどれがチェックされているのか調べる【Visual Studio】