VB6開発者向け:C#で始める.NETプログラミング

第8回 オブジェクト指向プログラミングの省力化

この記事を読むのに必要な時間:およそ 8.5 分

Form1の作成

Form1は,プロジェクトを作成した際に自動的に作られています。

Logicコンポーネントの配置

Form1のフォームエディタを開いて,TextBoxやButtonコントロールを配置する方法と同様に,LogicコンポーネントをツールボックスからForm1に配置します。 配置は,Form1のイメージ上ではなく,エディタの下部に表示されます。

なお,Logicコンポーネントをツールボックスに存在させるためには,Logicクラスを作成した後に,一度ビルドを成功させる必要があります。

コードの作成

コードは以下の通りです。

using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    //*************************************************************
    /// <summary>電話帳サンプルソフトフォーム</summary>
    //*************************************************************
    public partial class Form1 : Form
    {
        //*************************************************************
        ///<summary>コンストラクタ</summary>
        //*************************************************************
        public Form1() {
            this.InitializeComponent();
            this.codeTextBox.DataBindings.Add(
                "Text", this.logic, "Code");
            this.nameTextBox.DataBindings.Add(
                "Text", this.logic.BindingSource, "名前");
            this.telephoneNumberTextBox.DataBindings.Add(
                "Text", this.logic.BindingSource, "電話番号");
        }

        //*************************************************************
        // イベント処理用メソッド
        //*************************************************************
        private void addButton_Click(object sender, EventArgs e) {
            try {
                this.logic.Add();
            }
            catch(Exception ex) {
                MessageBox.Show(ex.Message);
            }
        }

        private void closeButton_Click(object sender, EventArgs e) {
            this.Close();
        }

        private void Form1_Load(object sender, EventArgs e) {
            this.logic.Fill();
        }

        private void readButton_Click(object sender, EventArgs e) {
            try {
                this.logic.Read();
            }
            catch(Exception ex) {
                MessageBox.Show(ex.Message);
            }
        }

        private void updateButton_Click(object sender, EventArgs e) {
            try {
                this.logic.Update();
            }
            catch(Exception ex) {
                MessageBox.Show(ex.Message);
            }
        }

        private void deleteButton_Click(object sender, EventArgs e) {
            try {
                this.logic.Delete();
            }
            catch(Exception ex) {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

基本的には,以前作成したForm1と同様ですが,logicフィールド変数はフォームエディタ側でコンポーネントとして設定されているためコードで記述していません。

コンストラクタ

今回も,各TextBoxへのバインディングをコンストラクタで指定しています。

this.nameTextBox.DataBindings.Add(
    "Text", this.logic.BindingSource, "名前");
this.telephoneNumberTextBox.DataBindings.Add(
    "Text", this.logic.BindingSource, "電話番号");

バインディングするオブジェクトは,RowではなくBindingSourceになります。

フォームロードイベント時の処理

以下のコードによって,フォームロードイベントによって,DataSetにデータが充填されます。

private void Form1_Load(object sender, EventArgs e) {
    this.logic.Fill();
}

最後に

今回は,DataSetを使う方法をご紹介しました。 ここまで理解できれば,実際にC#を使って仕事が行えるだけの下準備は十分にできていると言えるでしょう。

本連載は,今回が最後になります。

VB6で実際に活躍されているプログラマの方に向けた内容ということもあり,基本的な入門書という形に捕らわれることなく,サンプルコードを多用した説明をさせていただくことで,多くの内容を盛り込むことができました。

本連載を読んでくださった多くの方がC#によるプログラミングを楽んでいただけることを願っています。

最後に,本連載を読んでくださった皆さん,連載の機会を与えてくださった技術評論社と担当の方々を始めとする多くの皆さんに心からお礼を申し上げます。

ありがとうございました。

著者プロフィール

伊藤達也(いとうたつや)

(株)井沢電器設備にて、業務管理システムの開発に従事しています。 この記事の趣旨通り、筆者自身が2005年後半にメインの開発言語をVB6からC#に移行し、2007年には Microsoft MVPアワードをC#で受賞しました。