読者です 読者をやめる 読者になる 読者になる

AdeKode

アウトドア&インドア。アクティブ学生20歳の毎日…

第2回 C#で作るGUIアプリケーション入門【Labelイベントとプロパティ】

f:id:haluca-net:20161111012401p:plain

お久しぶりです、bangでございます。前回の第一回入門はいかがでしたでしょうか。まだ読んでない方は前回の記事を見ていただけると光栄です。 

              

前回は最初の起動画面からLabelとButtonの配置と簡単なButtonイベントのコードを書きましたね。

今回はそのコードの解説と、それに伴う他の言語にはない便利なものの紹介をしていきたいと思います。

スポンサーリンク

Labelイベント

前回はボタンを押すと発動するボタンイベントの関数を作りましたね、あれと同じように、Labelでも同様の事ができます。(おそらく他のコントロールでも可能と思われます。)

今回はForm1上にあるlabel1をダブルクリックしてみましょう。すると、以下のような画面になると思います。

f:id:haluca-net:20161110210156p:plain

またソースを書く画面になりましたね。いま青くなっているところが今回追加されたところです。今回はこんな感じでコードを書きくわえてみましょう。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TestApplication
{
    public partial class Form1 : Form
    {

        int a = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "第一回C#アプリケーション入門";
        }

        private void label1_Click(object sender, EventArgs e)
        {
            a++;
            label1.Text = a + "回目のクリック";
        }
    }
}

今回は上の方にも追加要素があるのを忘れないでくださいね。 

int a=0; 

の事です。

では実際に実行してみましょう。

f:id:haluca-net:20161110210411p:plain

ラベルを押すとこんな風になると思います。さらに続けると…

f:id:haluca-net:20161110210432p:plain

となってずっと数が増え続けると思います。

スポンサーリンク

ソースコード解説

さて、ここからソースコードでは何が起きているのか解説したいと思います。

関数の宣言について

まず上の方にあった int a=0; ですがこれは普段どおりの変数の宣言です。ちなみに.Net Framework*1上ではここに変数を宣言するとグローバル変数扱いになります。

変数の宣言に関してですが、C言語しか勉強していない方はちょっと不思議に思うかもしれませんが、C#では変数はどこで宣言してもいいのです。コードを書いている途中で変数の宣言を忘れてしまった!となってしまっても途中で書いてしまってもいいのです。(ただ、見やすいがいいかどうかは別にしてですが…)

ラベルについて

さてここからが本題です、a++をした後(インクリメント)、label1.Text = a + "回目のクリック"; となっていますよね、これについて解説していきます。

まずLabelとは.Net Frameworkが持つクラスの一つなんです。ほかにもコモンコントロールに入っているForm上に配置できるものはすべてクラスになっているはずです。ですので実際はソースエディター上から生成のコードを書くことができるので、デザイン画面を見ずとも設計することはできますが、僕は見ながらつくることをお勧めします。Labelクラスには、いろいろなプロパティとメソッドがあります。

また、Labelクラスには、いろいろなプロパティとメソットと呼ばれるものがあるのですが、それについて説明していきたいと思います。

プロパティ

プロパティとは、外部から見ると構造体のメンバ変数のような振る舞いをし、実際は関数のようにふるまうものです。これは他のオブジェクト指向言語にはないC#特有の便利な機能の一つです。

メソット

メソッドとは特定のステートメントを含んだメソッド引数を持つコードの集まりです。メソッドは構造体やクラスにアクセスレベル、名前、返り値などなどを入力して宣言することができます。

クラスとの違いは、メソッドは外部から見ても関数のような形としてとらえられるため、引数の有り無しで見分けることができます。






今回はこのLabelクラスのプロパティを利用して表示しているというわけです。

Labelクラスの中にTextプロパティがあります。このプロパティの値にstring型の値、つまり文字を代入することでForm上での文字表示を可能にしているというわけですね。Textプロパティは外部から見たら(ユーザから見れば)構造体のメンバ変数のような扱いなのでLabel1.Textと表すことができます。

そこから上記ソースエディターのように label1.Text = a + "回目のクリック"; と書き表すことができるのです。ちなみに変数を示す時は上記のように 変数+”テキスト” のように+演算子を使用して書き表します。C言語を知っている方からすれば型についての煩わしい表記から解放される、とてもいいものに見えると思います。

ではプロパティを利用してLabelの色を変えてみましょう。 先ほどのソースに以下のコードを追加してみてください。その後、実行してみましょう。

Labelの色を変更するコード

label1.ForeColor = Color.FromKnownColor(KnownColor.Red);

これを先ほどのまでのコードに追加した形が以下のコードになります。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TestApplication
{
    public partial class Form1 : Form
    {

        int a = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "第一回C#アプリケーション入門";
        }

        private void label1_Click(object sender, EventArgs e)
        {
            a++;
            label1.Text = a + "回目のクリック";

      //Labelの色を変更する(追加箇所)
            label1.ForeColor = Color.FromKnownColor(KnownColor.Red);
        }
    }
}

上記コードを実行してみると…

f:id:haluca-net:20161111003043p:plain

クリックしてみると、なんと!が変わりましたね!

今回はLabelクラスの一つであるForeColorプロパティを使っています。そこにColorのメソッドの一つFromKnownColorを使用しています。

引数はKnownColorプロパティのRedとなっていますね。一見難しいように見えますがForeColorプロパティにFromKnownColorの返り値を入れているだけです。難しく考えないようにしましょう。

まとめ

今回はC#の言語に関する話をちょっとしましたね。こんな感じで他のコモンコントロールのちょっとした使いかたと、使用例をこれから徐々に紹介していけたらなと思います。






個人的におすすめの本です。興味があればぜひご検討ください。

独習シリーズのC#編ですね、一人でC#を勉強するにはもってこいの本です。初歩の話から応用まで丁寧に書かれている良書です。

スポンサーリンク

*1:NET Framework(マイクロソフト ドットネット フレームワーク)は、マイクロソフトが開発したアプリケーション開発・実行環境である。 Windowsアプリケーションだけでなく、XML WebサービスやウェブアプリケーションなどWebベースのアプリケーションなども包括した環境となっている。