SHOEISHA iD

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

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

japan.internet.com翻訳記事

DataGridViewコントロールを操作する101の方法

DataGridViewコントロールの取り扱い方法まとめ

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

ダウンロード ソースコード (126.6 KB)

Windows Forms 2.0で新たに登場したDataGridViewコントロールは、用途があまりにも広く強力なために初心者がまごつきがちです。本稿では、よく使われる機能を簡単なリファレンスとして要約します(実際に101の方法を紹介しているわけではありませんが、相当な数があります)。

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

はじめに

 Windows Formsプログラミングで普段よく使われるコントロールの一つにDataGridViewがあります。DataGridViewは、Windows Forms 2.0で新たに登場したコントロールで、Windows Forms 1.0のDataGridコントロールの後継となるものです。非常に強力で用途の広いコントロールであり、各種のデータソースを表形式で表示するのに向いています。柔軟性が高いゆえに、公開されているプロパティ、メソッド、イベントも多数にのぼり、初心者にはかなり取っ付きにくいコントロールと言えます。

 本稿は、プログラミングの現場でDataGridViewコントロールをすぐ使いこなせるようにすることを目指しています。一般的なタスクをほぼカバーするよう努めましたが、DataGridViewコントロールの全機能を網羅しているわけではありません。

 本稿では、WindowsアプリケーションプロジェクトのデフォルトのフォームForm1にDataGridViewコントロールを配置するものと仮定します(図1)。

図1 手始めに新規のWindowsアプリケーションプロジェクトを作成し、Form1にDataGridViewコントロールを配置する
図1 手始めに新規のWindowsアプリケーションプロジェクトを作成し、Form1にDataGridViewコントロールを配置する

 それではさまざまなテクニックを見ていきましょう。

配列をバインドする

 DataGridViewコントロールに配列をバインドすることができます。次の例を見てください。

Dim arr() As String = _
   {"Product 1", "Product 24", "Product 356"}
DataGridView1.DataSource = arr

 arr()は3個の要素を持つ文字列配列です。DataSourceプロパティを用いてDataGridViewコントロールにバインドされています。図2に、このデータバインドの結果を示します。

図2 文字列配列をDataGridViewコントロールにバインドした結果
図2 文字列配列をDataGridViewコントロールにバインドした結果

 この結果は意外なものかもしれません。おそらく、配列の各要素が表示されると予想していた人が多いのではないでしょうか。実際には、各要素の長さが表示されます。DataGridViewコントロールはバインドされたオブジェクトの最初のパブリックプロパティを探すからです。この例では、文字列配列の最初のパブリックプロパティは配列内の各要素の長さなので、上のような結果が得られるわけです。

 文字列配列をDataGridViewコントロールに正しくバインドするためには、次に示すように文字列型をラップするクラスを作成し、このクラスが、要素の内容を返すパブリックプロパティNameを公開するようにします。

Public Class CStringItem
    Private _str As String
    Public Sub New(ByVal str As String)
        _str = str
    End Sub

    Public Property Name() As String
        Get
            Return _str
        End Get
        Set(ByVal value As String)
            _str = value
        End Set
    End Property
End Class

 次の例では、arr()をCStringItem型の配列として宣言し、3個の要素を初期設定した後で、DataGridViewコントロールにバインドします。

'---modified array---
Dim arr() As CStringItem = { _
   New CStringItem("Product 1"), _
   New CStringItem("Product 2"), _
   New CStringItem("Product 3")}
DataGridView1.DataSource = arr

 図3は、このデータバインドの結果です。パブリックプロパティNameがDataGridViewコントロール内の列の見出しテキストとして使われていることに注意してください。

図3 DataGridViewコントロールにオブジェクトの配列をバインドした結果
図3 DataGridViewコントロールにオブジェクトの配列をバインドした結果

カスタムオブジェクトをバインドする

 次の例では、DataGridViewコントロールにもっと複雑なオブジェクトをバインドする方法を説明します。2つのパブリックプロパティ(NameID)を持つCStudentクラスを定義します。

Public Class CStudent
    Private _name As String
Private _ID As String

    Public Sub New(ByVal id As String, ByVal name As String)
        _ID = id
        _name = name
    End Sub

    Public Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property

    Public Property ID() As String
        Get
            Return _ID
        End Get
        Set(ByVal value As String)
            _ID = value
        End Set
    End Property
End Class

 DataGridViewコントロールにCStudentオブジェクトの配列をバインドすると、図4の結果が得られます。

'---binding to custom object---
Dim students() As CStudent = _
   {New CStudent("123-456-789", "John"), _
    New CStudent("456-123-789", "Mary")}
DataGridView1.DataSource = students
図4 DataGridViewコントロールにCStudentオブジェクトの配列をバインドした結果
図4 DataGridViewコントロールにCStudentオブジェクトの配列をバインドした結果

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
型指定されたデータセットを用いてバインドする

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

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

Wei-Meng Lee(Wei-Meng Lee)

Microsoft MVP受賞者。Microsoft社の最新テクノロジー実地研修を専門とするDeveloper Learning Solutions社を創設。.NETとワイヤレステクノロジーの開発者、指導者として知られる。国際的なカンファレンスでたびたび講演し、.NET、XML、ワイヤレステクノロジーに関す...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1120 2007/03/28 07:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング