プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

C++/CLIでDataGridViewを使用する

この記事は2020年06月12日に投稿しました。

f:id:paveway:20190914064630j:plain

目次

  1. はじめに
  2. C++/CLIでDataGridViewを使用する
  3. おわりに

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているC++/CLIでDataGridViewを使用する方法についてです。

目次へ

2. C++/CLIでDataGridViewを使用する/a>

C++/CLIでDataGridViewを使用するには、以下のような実装になります。

実装例

MainForm.h

#pragma once

#define COLUMN_NUM (3)
#define ROW_NUM        (5)

namespace CLIDataGridView {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    /// <summary>
    /// MainForm の概要
    /// </summary>
    public ref class MainForm : public System::Windows::Forms::Form
    {
    public:
        MainForm(void)
        {
            InitializeComponent();
            
            // データグリッドビューのサイズをフォームのクライアントサイズに合わせます。
            dataGridView->Size = this->ClientSize;

            // 列数を3とします。
            dataGridView->ColumnCount = 3;
            
            // 行ヘッダを非表示とします。
            dataGridView->RowHeadersVisible = false;
            
            // 行追加を禁止します。
            dataGridView->AllowUserToAddRows = false;
            
            // 列幅の変更を禁止します。
            dataGridView->AllowUserToResizeColumns = false;
            
            // 行高さの変更を禁止します。
            dataGridView->AllowUserToResizeRows = false;
            
            // 複数選択不可とします。
            dataGridView->MultiSelect = false;
            
            // 選択単位をセルにします。
            dataGridView->SelectionMode = DataGridViewSelectionMode::CellSelect;
            
            // 列の属性を設定します。
            int columnWidth = dataGridView->Width / COLUMN_NUM;
            for (int columnIndex = 0; columnIndex < COLUMN_NUM; ++columnIndex)
            {
                // 列タイトルを設定します。
                dataGridView->Columns[columnIndex]->HeaderText = "列" + columnIndex;

                // 列幅を設定します。
                dataGridView->Columns[columnIndex]->Width = columnWidth;

                // 並べ替えを禁止します。
                dataGridView->Columns[columnIndex]->SortMode = DataGridViewColumnSortMode::NotSortable;
            }

            // セルのデータを設定します。
            for (int rowIndex = 0; rowIndex < ROW_NUM; ++rowIndex)
            {
                array<String^>^ row = gcnew array<String^>(3);
                for (int columnIndex = 0; columnIndex < COLUMN_NUM; ++columnIndex)
                {
                    String^ title = String::Format("{0:D}-{1:D}", rowIndex, columnIndex);
                    row[columnIndex] = title;
                }
                dataGridView->Rows->Add(row);
            }

            // 行2列1の値を変更します。
            dataGridView->Rows[2]->Cells[1]->Value = "Data";
        }
        (以下、省略)
    };
}
main.cpp
#include "MainForm.h"

using namespace CLIDataGridView;

[STAThreadAttribute]
int main()
{
    MainForm^ form = gcnew MainForm();
    form->ShowDialog();
    return 0;
}

実行結果

f:id:paveway:20200611225111p:plain

API Reference

DataGridViewクラス

目次へ

3. おわりに

表の表示はよく使うと思うのですが、DataGridViewを使えば割と簡単に表示できます。

紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。

目次へ


私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。

また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。

EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688

目次へ