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

第5回 C#のコードに移植する

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

はじめに

本連載では,実際にVB6で開発したソフトウェアをC#に置き換えながら基本的な技術を学んでいただきます。

前回は,C#を使ってフォームを作成し,イベントに対するメソッドを作成しました。今回は,第2回 VB6で作ったサンプルソフトでご紹介したVB6のコードを,可能な限り忠実にC#のコードに単純に移植したあとに,要点をご説明していきたいと思います。

単純にC#に移植したコード

なるべくVB6のコードに近い形で移植しました。

各メンバ名,引数や戻り値,各メンバの役割りや振る舞いもすべてVB6と同様です。

まずは,以下のC#のコードを第2回 VB6で作ったサンプルソフトでご紹介したVB6のコードと比較しながら確認してみてください。 VB6で書いていた内容をC#で書く場合にはどうすればよいのかが簡単に理解できるはずです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;    // 追加
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    //*************************************************************
    /// <summary>電話帳サンプルソフトフォーム</summary>
    //*************************************************************
    public partial class Form1 : Form
    {
        private OleDbConnection dbConnection;
        private const string FILENAME = @"c:\Database.mdb";

        //*************************************************************
        ///<summary>コンストラクタ</summary>
        //*************************************************************
        public Form1()
        {
            InitializeComponent();
        }

        //*************************************************************
        // イベント処理用メソッド
        //*************************************************************
        private void addButton_Click(object sender, EventArgs e)
        {
            if (!AddLogic()) return;
            ClearData();
        }

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

        private void Form1_Load(object sender, EventArgs e)
        {
            ConnectDatabase();
            codeTextBox.Text = "";
            ClearData();
        }

        private void Form1_FormClosed(
            object sender, FormClosedEventArgs e)
        {
            CloseDatabase();
        }

        private void readButton_Click(object sender, EventArgs e)
        {
            ReadLogic();
        }

        private void updateButton_Click(object sender, EventArgs e)
        {
            UpdateLogic();
        }

        private void deleteButton_Click(object sender, EventArgs e)
        {
            if (!DeleteLogic()) return;
            ClearData();
        }

        //*************************************************************
        /// <summary>名前と電話番号の表示をクリアします</summary>
        //*************************************************************
        private void ClearData()
        {
            nameTextBox.Text = "";
            telephoneNumberTextBox.Text = "";
        }

        //*************************************************************
        /// <summary>Code プロパティ</summary>
        /// <remarks>CodeTextBox.Text に入力されている値です</remarks>
        //*************************************************************
        private int Code
        {
            get
            {
                int r = 0;
                if (int.TryParse(codeTextBox.Text, out r)) return r;
                return 0;
            }

            set
            {
                codeTextBox.Text = value.ToString();
            }
        }

        //*************************************************************
        /// <summary>追加処理を実行します</summary>
        /// <returns>結果 [True:成功 / False:失敗]</returns>
        //*************************************************************
        private bool AddLogic()
        {
            if (InvalidCode(Code))
            {
                MessageBox.Show("追加できませんでした");
                return false;
            }
            AddRecord(Code);
            return true;
        }

        //*************************************************************
        /// <summary>更新処理を実行します</summary>
        /// <returns>結果 [True:成功 / False:失敗]</returns>
        //*************************************************************
        private bool UpdateLogic()
        {
            if (InvalidCode(Code))
            {
                MessageBox.Show("更新に失敗しました");
                return false;
            }
            
            UpdateRecord(
                Code, nameTextBox.Text, telephoneNumberTextBox.Text);
            
            return true;
        }

        //*************************************************************
        /// <summary>削除処理を実行します</summary>
        /// <returns>結果 [True:成功 / False:失敗]</returns>
        //*************************************************************
        private bool DeleteLogic()
        {
            if (InvalidCode(Code))
            {
                MessageBox.Show("削除に失敗しました");
                return false;
            }
            DeleteRecord(Code);
            return true;
        }

次ページへ続く

著者プロフィール

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

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

コメント

コメントの記入