SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(MultiRow)

高性能な伝票入力フォームを持った.NETアプリケーションを作る

MultiRow for Windows Forms 5.0Jで伝票明細のようなグリッドを作る

  • このエントリーをはてなブックマークに追加

作成したGcMultiRowコンポーネントのデザインをフォームに反映する

 ここまで作成したら、GcMultiRowコンポーネントのデザインをフォームに反映させます。

 フォームデザイナに切り替え、Visual Studioの[ビルド]-[リビルド]メニューを実行します。すると、ツールボックスに「xxxコンポーネント」というタブが作成され、「Template1」というコンポーネントが作成されます。これをフォームにドラッグ&ドロップします。

[ビルド]-[リビルド]メニューを実行
「ビルド-リビルド」メニューを実行
「xxxコンポーネント」タブが作成され「Template1」が作成される
「xxxコンポーネント」タブが作成され「Template1」が作成される

 次に、GcMultiRowコンポーネントの「Tenplate」プロパティに、この「Template1」を設定します。これで、GcMultiRowコンポーネントのデザインをフォームに反映できます。

「Tenplate」プロパティに「Template1」を設定する
「Tenplate」プロパティに「Template1」を設定する

 以降、デザイナでグリッドのデザインを変更した場合は、Visual Studioの[ビルド]-[リビルド]メニューを実行してください。この操作を行わないと、GcMultiRowコンポーネントのデザインをフォームに反映することができません。

セルのデータを取得する

 セルに入力された値を取得するには、GcMultiRowクラスのGetValueメソッドを使用します。メソッドの引数は2つで、データを取り出したい位置のセルの行列番号を指定します。

GetValueメソッドの書式
Visual Basic
Public Function GetValue(ByVal rowIndex As Integer, _ 
   				 ByVal cellIndex As Integer _ 
				) As Object
C#
public object GetValue(int rowIndex, int cellIndex);
引数 説明
rowIndex セルの行インデックス
cellIndex セルの列インデックス

 セルの行番号は最も上の行が「0」になり、列番号はセルを配置した順に自動的に割り振られます。セルの列インデックスを確認するには、デザイナで[テンプレート]-[セルの情報]-[インデックス]をオンにします。

セルの行列番号
セルの行列番号

 このプログラムでは、「合計金額」に入力された値を取り出し、購入金額の合計をMaskedTextBoxコントロールのDoubleClickイベントハンドラで合計するようにしました。このとき、GcMultiRowクラスのRowCountプロパティで、現在何行のデータが入力されているのかを把握し、その行数分の合計を出すようにしています。

Visual Basic
Dim sum As Integer = 0
Private Sub MaskedTextBox2_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles MaskedTextBox2.DoubleClick
    Dim cnt As Integer = 0
    Dim i As Integer

    cnt = Me.GcMultiRow1.RowCount
    For i = 0 To cnt - 1
        sum += Convert.ToInt32(Me.GcMultiRow1.GetValue(i, 6))
    Next

    Me.MaskedTextBox2.Text = Convert.ToString(sum)
End Sub
C#
int sum = 0;
private void maskedTextBox2_DoubleClick(object sender, EventArgs e)
{
    int cnt = 0;
    int i ;

    cnt = gcMultiRow1.RowCount;
    for (i = 0; i <= cnt - 1; i++ )
    {
        sum += Convert.ToInt32(gcMultiRow1.GetValue(i, 6));
    }

    maskedTextBox2.Text = Convert.ToString(sum);
}

まとめ

 このようにMultiRow for Windows Forms 5.0JのGcMultiRowコンポーネントは、単純な行列ではない複雑なレイアウトの表を、簡単に作成できるコンポーネントです。また、豊富なセル型がエンドユーザーの入力を助けてくれるので、ユーザビリティの向上につながります。アプリケーション操作の学習にかかる時間を短縮できるというメリットも生まれます。

 今回は、簡単な売り上げデータ入力のアプリケーションを作りました。ページの関係で、MultiRow for Windows Forms 5.0Jのほんのわずかの機能しか紹介できませんでしたが、このアプリケーションを作るのにも大して時間はかからなかったので、グリッドの作り込みやDBデータの表示で苦労されている方々には、大きなメリットを生み出すコンポーネントだと思います。

 次回は、もう少しこのアプリケーションの機能を拡張していきたいと思います。

製品情報

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(MultiRow)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4411 2009/10/16 11:47

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング