トップ回答者
DataGridViewCheckBoxColumnにテキストも表示

質問
回答
-
一般にDataGridViewはひとつのカラムに値をひとつ設定できるように作られています。
チェックボックスの横にテキストも表示するとはひとつのカラムに値がふたついります。
ReadOnly な DataGridViewTextBoxColumn を DataGridViewCheckBoxColumn の右側においてそれらしく見せることはできます。
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2009/12 -
Myonさん の発言:残念ながら簡単にはできません。通常は列のタイトルで事足りるからでしょう。
簡単に出来るものでしょうか。
検索しただけですが、以下のページが参考になると思います。
DataGridViewCheckBoxCellにラベルを表示する
http://iyouneta.blog49.fc2.com/blog-entry-331.html
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/ -
こんにちは!(^^)!ふ~です。
DataGridView.RowPostPaint イベントハンドラー処理を使用しても、簡単にチェックボックスに文字列を表示できます。
<ファイル名 Form1.cs >
using System;using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace DataGreidViewCheckBoxLabel { public partial class Form1 : Form { public Form1() { InitializeComponent(); MakeTable(); dataGridView1.RowPostPaint += new DataGridViewRowPostPaintEventHandler(dataGridView1_RowPostPaint); } // DataGridView.RowPostPaint イベントハンドラー処理をする void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { DataGridView dgv = (DataGridView)sender; DataGridViewColumn column1 = dataGridView1.Columns["No."]; DataGridViewColumn column2 = dataGridView1.Columns["名前"]; DataGridViewColumn column3 = dataGridView1.Columns["得点"]; DataGridViewColumn column4 = dataGridView1.Columns["チェックボックス"]; int startX = dgv.RowHeadersVisible ? dgv.RowHeadersWidth : 0; //int startY = e.RowBounds.Top + e.RowBounds.Height - 1; // 文字表示位置を調整する int pX = startX + column1.Width + column2.Width + column3.Width + 20; int pY = e.RowBounds.Y + 5; //フォントオブジェクトを作成する Font fnt = new Font("MS UI Gothic", 8); //チェックボックスに表示する文字列を作成する string strMes = string.Format( "チェック {0}", e.RowIndex ); //チェックボックスの位置に文字列を表示する e.Graphics.DrawString( strMes, fnt, Brushes.Blue, pX, pY); //フォントオブジェクトを開放する fnt.Dispose(); } /// <summary> /// dataGridView1にテストデータを設定する /// </summary> private void MakeTable() { // Create a new DataTable. DataTable table = new DataTable("testTable"); DataColumn column; DataRow row; // Create first column and add to the DataTable. column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "No."; column.AutoIncrement = true; column.Caption = "ID"; column.ReadOnly = true; column.Unique = true; // Add the column to the DataColumnCollection. table.Columns.Add(column); // Create second column. column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.ColumnName = "名前"; column.AutoIncrement = false; column.Caption = "Name"; column.ReadOnly = false; column.Unique = false; table.Columns.Add(column); // Create third column. column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "得点"; column.AutoIncrement = false; column.Caption = "Score"; column.ReadOnly = false; column.Unique = false; table.Columns.Add(column); dataGridView1.DataSource = table; // チェックボックスの設定する DataGridViewCheckBoxColumn CheckBoxColumn = new DataGridViewCheckBoxColumn(); CheckBoxColumn.Name = "チェックボックス"; CheckBoxColumn.HeaderText = "ヘッダーテキスト"; CheckBoxColumn.ThreeState = true; CheckBoxColumn.CellTemplate.Style.BackColor = Color.Beige; CheckBoxColumn.FlatStyle = FlatStyle.Standard; CheckBoxColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; dataGridView1.Columns.Add(CheckBoxColumn); // チェックボックスを左に寄せる dataGridView1.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft; // テーブルにデータを設定する for (int i = 0; i <= 4; i++) { row = table.NewRow(); row["No."] = i; row["名前"] = "PoNiyo " + i; row["得点"] = 10; table.Rows.Add(row); } for (int i = 0; i <= 4; i++) { row = table.NewRow(); row["No."] = i + 5; row["名前"] = "PoNiyo " + i; row["得点"] = 20; table.Rows.Add(row); } for (int i = 0; i <= 4; i++) { row = table.NewRow(); row["No."] = i + 10; row["名前"] = "PoNiyo " + i; row["得点"] = 30; table.Rows.Add(row); } } } }
<作成方法>
1.VS2005のWindowsアプリケーションのプロジェクトを作成する。
2.フォームへDataGridViewコントロールを張り付ける。
3.DataGridView.RowPostPaint イベントを追加する(.NET Framework version 2.0 で新しく追加されたもの)
以上- 回答としてマーク Myon 2009年3月21日 17:39
すべての返信
-
一般にDataGridViewはひとつのカラムに値をひとつ設定できるように作られています。
チェックボックスの横にテキストも表示するとはひとつのカラムに値がふたついります。
ReadOnly な DataGridViewTextBoxColumn を DataGridViewCheckBoxColumn の右側においてそれらしく見せることはできます。
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2009/12 -
Myonさん の発言:残念ながら簡単にはできません。通常は列のタイトルで事足りるからでしょう。
簡単に出来るものでしょうか。
検索しただけですが、以下のページが参考になると思います。
DataGridViewCheckBoxCellにラベルを表示する
http://iyouneta.blog49.fc2.com/blog-entry-331.html
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/ -
こんにちは!(^^)!ふ~です。
DataGridView.RowPostPaint イベントハンドラー処理を使用しても、簡単にチェックボックスに文字列を表示できます。
<ファイル名 Form1.cs >
using System;using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace DataGreidViewCheckBoxLabel { public partial class Form1 : Form { public Form1() { InitializeComponent(); MakeTable(); dataGridView1.RowPostPaint += new DataGridViewRowPostPaintEventHandler(dataGridView1_RowPostPaint); } // DataGridView.RowPostPaint イベントハンドラー処理をする void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { DataGridView dgv = (DataGridView)sender; DataGridViewColumn column1 = dataGridView1.Columns["No."]; DataGridViewColumn column2 = dataGridView1.Columns["名前"]; DataGridViewColumn column3 = dataGridView1.Columns["得点"]; DataGridViewColumn column4 = dataGridView1.Columns["チェックボックス"]; int startX = dgv.RowHeadersVisible ? dgv.RowHeadersWidth : 0; //int startY = e.RowBounds.Top + e.RowBounds.Height - 1; // 文字表示位置を調整する int pX = startX + column1.Width + column2.Width + column3.Width + 20; int pY = e.RowBounds.Y + 5; //フォントオブジェクトを作成する Font fnt = new Font("MS UI Gothic", 8); //チェックボックスに表示する文字列を作成する string strMes = string.Format( "チェック {0}", e.RowIndex ); //チェックボックスの位置に文字列を表示する e.Graphics.DrawString( strMes, fnt, Brushes.Blue, pX, pY); //フォントオブジェクトを開放する fnt.Dispose(); } /// <summary> /// dataGridView1にテストデータを設定する /// </summary> private void MakeTable() { // Create a new DataTable. DataTable table = new DataTable("testTable"); DataColumn column; DataRow row; // Create first column and add to the DataTable. column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "No."; column.AutoIncrement = true; column.Caption = "ID"; column.ReadOnly = true; column.Unique = true; // Add the column to the DataColumnCollection. table.Columns.Add(column); // Create second column. column = new DataColumn(); column.DataType = System.Type.GetType("System.String"); column.ColumnName = "名前"; column.AutoIncrement = false; column.Caption = "Name"; column.ReadOnly = false; column.Unique = false; table.Columns.Add(column); // Create third column. column = new DataColumn(); column.DataType = System.Type.GetType("System.Int32"); column.ColumnName = "得点"; column.AutoIncrement = false; column.Caption = "Score"; column.ReadOnly = false; column.Unique = false; table.Columns.Add(column); dataGridView1.DataSource = table; // チェックボックスの設定する DataGridViewCheckBoxColumn CheckBoxColumn = new DataGridViewCheckBoxColumn(); CheckBoxColumn.Name = "チェックボックス"; CheckBoxColumn.HeaderText = "ヘッダーテキスト"; CheckBoxColumn.ThreeState = true; CheckBoxColumn.CellTemplate.Style.BackColor = Color.Beige; CheckBoxColumn.FlatStyle = FlatStyle.Standard; CheckBoxColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None; dataGridView1.Columns.Add(CheckBoxColumn); // チェックボックスを左に寄せる dataGridView1.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft; // テーブルにデータを設定する for (int i = 0; i <= 4; i++) { row = table.NewRow(); row["No."] = i; row["名前"] = "PoNiyo " + i; row["得点"] = 10; table.Rows.Add(row); } for (int i = 0; i <= 4; i++) { row = table.NewRow(); row["No."] = i + 5; row["名前"] = "PoNiyo " + i; row["得点"] = 20; table.Rows.Add(row); } for (int i = 0; i <= 4; i++) { row = table.NewRow(); row["No."] = i + 10; row["名前"] = "PoNiyo " + i; row["得点"] = 30; table.Rows.Add(row); } } } }
<作成方法>
1.VS2005のWindowsアプリケーションのプロジェクトを作成する。
2.フォームへDataGridViewコントロールを張り付ける。
3.DataGridView.RowPostPaint イベントを追加する(.NET Framework version 2.0 で新しく追加されたもの)
以上- 回答としてマーク Myon 2009年3月21日 17:39