DataGridColumnStyle クラス
System.Windows.Forms.DataGrid コントロールの列に関する、外観、テキスト書式、および動作を指定します。このクラスは抽象クラスです。
この型のすべてのメンバの一覧については、DataGridColumnStyle メンバ を参照してください。
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.DataGridColumnStyle
System.Windows.Forms.DataGridBoolColumn
System.Windows.Forms.DataGridTextBoxColumn
MustInherit Public Class DataGridColumnStyle
Inherits Component
Implements IDataGridColumnStyleEditingNotificationService
[C#]
public abstract class DataGridColumnStyle : Component,
IDataGridColumnStyleEditingNotificationService
[C++]
public __gc __abstract class DataGridColumnStyle : public
Component, IDataGridColumnStyleEditingNotificationService
[JScript]
public abstract class DataGridColumnStyle extends Component
implements IDataGridColumnStyleEditingNotificationService
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
DataGridColumnStyle オブジェクトのコレクション (GridColumnStylesCollection) は、 System.Windows.Forms.DataGrid コントロールの TableStyles プロパティを通じてアクセスします。
System.Windows.Forms.DataGrid コントロールでは、 DataSource プロパティを適切なデータ ソースに設定すると、 DataGridColumnStyle オブジェクトのコレクションが自動的に作成されます。作成されたオブジェクトは、実際には DataGridColumnStyle クラスから継承された、 DataGridBoolColumn または DataGridTextBoxColumn のいずれかのクラスのインスタンスです。
データ表示の書式を指定するには、 DataGridTextBoxColumn クラスの Format プロパティを書式指定値のいずれかに設定します。有効な書式指定値の詳細については、「 日付と時刻の書式指定文字列 」と「 標準の数値書式指定文字列 」を参照してください。
独自の DataGridColumnStyle オブジェクト セットを作成し、それらのオブジェクトを GridColumnStylesCollection に追加することもできます。この操作を行うときは、各列スタイルの MappingName を DataColumn の ColumnName に設定して、実際のデータと列の表示を同期させます。
注意 必ず DataGridColumnStyle オブジェクトを作成して GridColumnStylesCollection に追加してから、 DataGridTableStyle オブジェクトを GridTableStylesCollection に追加します。有効な MappingName を指定して空の DataGridTableStyle をコレクションに追加すると、自動的に DataGridColumnStyle オブジェクトが生成されます。そのため、 MappingName 値が重複する新しい DataGridColumnStyle オブジェクトを GridColumnStylesCollection に追加しようとすると、例外がスローされます。
System.Windows.Forms.DataGrid コントロールによって派生クラスのいずれかがインスタンス化される場合、作成されるクラスは、 DataGridColumnStyle オブジェクトに関連付けられた DataColumn の DataType によって異なります。たとえば、 DataType が System.Boolean に設定された DataColumn は、 DataGridBoolColumn に関連付けられます。 DataGridColumnStyle の型を確認するには、 GetType メソッドを使用します。
独自の列クラスを作成するには、 DataGridColumnStyle から継承できます。 TextBox コントロールを管理する DataGridTextBox クラスの場合のように、コントロールを管理する特別な列を作成するために独自の列クラスを作成できます。たとえば、 Image コントロールを管理して列にイメージを表示したり、独自のユーザー コントロールを作成して列で管理したりできます。
DataGridColumnStyle の機能は、 DataColumn の機能とは異なります。 DataColumn がデータ テーブルのスキーマの作成に使用するプロパティおよびメソッドを格納しているのに対し、 DataGridColumnStyle は画面上の各列の外観に関連するプロパティおよびメソッドを格納しています。
行が DBNull.Value を格納している場合、列に表示されるテキストは NullText プロパティを使用して設定できます。
DataGridColumnStyle クラスを使用すると、データを変更中に列の動作を指定することもできます。 BeginUpdate メソッドと EndUpdate メソッドは、列のデータに対して大規模な更新が行われている間、一時的に列の描画を中断します。この機能を使用しない場合、グリッドの各セルが変更されるたびに描画されるため、ユーザーがストレスを感じたり、パフォーマンスが低下したりします。
Edit イベント、 Commit イベントなどのメソッドを使用すると、ユーザーが編集する列を監視できます。
このクラスのプロパティおよびメソッドの多くは、列の外観を制御するために使用されます。ただし、 GetColumnValueAtRow や SetColumnValueAtRow などのメソッドは、指定したセルの値を調べたり、変更したりできます。
実装時の注意: DataGridColumnStyle から継承する場合は、 Abort 、 Commit 、 Edit 、 Paint (2 回) の各メンバをオーバーライドする必要があります。
使用例
[Visual Basic, C#, C++] DateTimePicker コントロールを管理する DataGridColumnStyle を作成する例を次に示します。
Imports System
Imports System.Data
Imports System.Windows.Forms
Imports System.Drawing
Imports System.ComponentModel
' This example shows how to create your own column style that
' hosts a control, in this case, a DateTimePicker.
Public Class DataGridTimePickerColumn
Inherits DataGridColumnStyle
Private customDateTimePicker1 As New CustomDateTimePicker()
' The isEditing field tracks whether or not the user is
' editing data with the hosted control.
Private isEditing As Boolean
Public Sub New()
customDateTimePicker1.Visible = False
End Sub
Protected Overrides Sub Abort(ByVal rowNum As Integer)
isEditing = False
RemoveHandler customDateTimePicker1.ValueChanged, _
AddressOf TimePickerValueChanged
Invalidate()
End Sub
Protected Overrides Function Commit _
(ByVal dataSource As CurrencyManager, ByVal rowNum As Integer) _
As Boolean
customDateTimePicker1.Bounds = Rectangle.Empty
RemoveHandler customDateTimePicker1.ValueChanged, _
AddressOf TimePickerValueChanged
If Not isEditing Then
Return True
End If
isEditing = False
Try
Dim value As DateTime = customDateTimePicker1.Value
SetColumnValueAtRow(dataSource, rowNum, value)
Catch
End Try
Invalidate()
Return True
End Function
Protected Overloads Overrides Sub Edit( _
ByVal [source] As CurrencyManager, _
ByVal rowNum As Integer, _
ByVal bounds As Rectangle, _
ByVal [readOnly] As Boolean, _
ByVal displayText As String, _
ByVal cellIsVisible As Boolean)
Dim value As DateTime = _
CType(GetColumnValueAtRow([source], rowNum), DateTime)
If cellIsVisible Then
customDateTimePicker1.Bounds = New Rectangle _
(bounds.X + 2, bounds.Y + 2, bounds.Width - 4, _
bounds.Height - 4)
customDateTimePicker1.Value = value
customDateTimePicker1.Visible = True
AddHandler customDateTimePicker1.ValueChanged, _
AddressOf TimePickerValueChanged
Else
customDateTimePicker1.Value = value
customDateTimePicker1.Visible = False
End If
If customDateTimePicker1.Visible Then
DataGridTableStyle.DataGrid.Invalidate(bounds)
End If
customDateTimePicker1.Focus()
End Sub
Protected Overrides Function GetPreferredSize( _
ByVal g As Graphics, _
ByVal value As Object) As Size
Return New Size(100, customDateTimePicker1.PreferredHeight + 4)
End Function
Protected Overrides Function GetMinimumHeight() As Integer
Return customDateTimePicker1.PreferredHeight + 4
End Function
Protected Overrides Function GetPreferredHeight( _
ByVal g As Graphics, ByVal value As Object) As Integer
Return customDateTimePicker1.PreferredHeight + 4
End Function
Protected Overloads Overrides Sub Paint( _
ByVal g As Graphics, ByVal bounds As Rectangle, _
ByVal [source] As CurrencyManager, ByVal rowNum As Integer)
Paint(g, bounds, [source], rowNum, False)
End Sub
Protected Overloads Overrides Sub Paint(ByVal g As Graphics, _
ByVal bounds As Rectangle, ByVal [source] As CurrencyManager, _
ByVal rowNum As Integer, ByVal alignToRight As Boolean)
Paint(g, bounds, [source], rowNum, Brushes.Red, _
Brushes.Blue, alignToRight)
End Sub
Protected Overloads Overrides Sub Paint(ByVal g As Graphics, _
ByVal bounds As Rectangle, ByVal [source] As CurrencyManager, _
ByVal rowNum As Integer, ByVal backBrush As Brush, _
ByVal foreBrush As Brush, ByVal alignToRight As Boolean)
Dim [date] As DateTime = _
CType(GetColumnValueAtRow([source], rowNum), DateTime)
Dim rect As Rectangle = bounds
g.FillRectangle(backBrush, rect)
rect.Offset(0, 2)
rect.Height -= 2
g.DrawString([date].ToString("d"), _
Me.DataGridTableStyle.DataGrid.Font, foreBrush, _
RectangleF.FromLTRB(rect.X, rect.Y, rect.Right, rect.Bottom))
End Sub
Protected Overrides Sub SetDataGridInColumn(ByVal value As DataGrid)
MyBase.SetDataGridInColumn(value)
If Not (customDateTimePicker1.Parent Is Nothing) Then
customDateTimePicker1.Parent.Controls.Remove(customDateTimePicker1)
End If
If Not (value Is Nothing) Then
value.Controls.Add(customDateTimePicker1)
End If
End Sub
Private Sub TimePickerValueChanged( _
ByVal sender As Object, ByVal e As EventArgs)
' Remove the handler to prevent it from being called twice in a row.
RemoveHandler customDateTimePicker1.ValueChanged, _
AddressOf TimePickerValueChanged
Me.isEditing = True
MyBase.ColumnStartedEditing(customDateTimePicker1)
End Sub
End Class
Public Class CustomDateTimePicker
Inherits DateTimePicker
Protected Overrides Function ProcessKeyMessage(ByRef m As Message) As Boolean
' Keep all the keys for the DateTimePicker.
Return ProcessKeyEventArgs(m)
End Function
End Class
Public Class MyForm
Inherits Form
Private namesDataTable As DataTable
Private myGrid As DataGrid = New DataGrid()
Public Sub New()
InitForm()
namesDataTable = New DataTable("NamesTable")
namesDataTable.Columns.Add(New DataColumn("Name"))
Dim dateColumn As DataColumn = _
New DataColumn("Date", GetType(DateTime))
dateColumn.DefaultValue = DateTime.Today
namesDataTable.Columns.Add(dateColumn)
Dim namesDataSet As DataSet = New DataSet()
namesDataSet.Tables.Add(namesDataTable)
myGrid.DataSource = namesDataSet
myGrid.DataMember = "NamesTable"
AddGridStyle()
AddData()
End Sub
Private Sub AddGridStyle()
Dim myGridStyle As DataGridTableStyle = _
New DataGridTableStyle()
myGridStyle.MappingName = "NamesTable"
Dim nameColumnStyle As DataGridTextBoxColumn = _
New DataGridTextBoxColumn()
nameColumnStyle.MappingName = "Name"
nameColumnStyle.HeaderText = "Name"
myGridStyle.GridColumnStyles.Add(nameColumnStyle)
Dim customDateTimePicker1ColumnStyle As DataGridTimePickerColumn = _
New DataGridTimePickerColumn()
customDateTimePicker1ColumnStyle.MappingName = "Date"
customDateTimePicker1ColumnStyle.HeaderText = "Date"
customDateTimePicker1ColumnStyle.Width = 100
myGridStyle.GridColumnStyles.Add(customDateTimePicker1ColumnStyle)
myGrid.TableStyles.Add(myGridStyle)
End Sub
Private Sub AddData()
Dim dRow As DataRow = namesDataTable.NewRow()
dRow("Name") = "Name 1"
dRow("Date") = New DateTime(2001, 12, 1)
namesDataTable.Rows.Add(dRow)
dRow = namesDataTable.NewRow()
dRow("Name") = "Name 2"
dRow("Date") = New DateTime(2001, 12, 4)
namesDataTable.Rows.Add(dRow)
dRow = namesDataTable.NewRow()
dRow("Name") = "Name 3"
dRow("Date") = New DateTime(2001, 12, 29)
namesDataTable.Rows.Add(dRow)
dRow = namesDataTable.NewRow()
dRow("Name") = "Name 4"
dRow("Date") = New DateTime(2001, 12, 13)
namesDataTable.Rows.Add(dRow)
dRow = namesDataTable.NewRow()
dRow("Name") = "Name 5"
dRow("Date") = New DateTime(2001, 12, 21)
namesDataTable.Rows.Add(dRow)
namesDataTable.AcceptChanges()
End Sub
Private Sub InitForm()
Me.Size = New Size(500, 500)
myGrid.Size = New Size(350, 250)
myGrid.TabStop = True
myGrid.TabIndex = 1
Me.StartPosition = FormStartPosition.CenterScreen
Me.Controls.Add(myGrid)
End Sub
<STAThread()> _
Public Shared Sub Main()
Application.Run(New MyForm())
End Sub
End Class
[C#]
using System;
using System.Data;
using System.Windows.Forms;
using System.Drawing;
// This example shows how to create your own column style that
// hosts a control, in this case, a DateTimePicker.
public class DataGridTimePickerColumn : DataGridColumnStyle
{
private CustomDateTimePicker customDateTimePicker1 =
new CustomDateTimePicker();
// The isEditing field tracks whether or not the user is
// editing data with the hosted control.
private bool isEditing;
public DataGridTimePickerColumn() : base()
{
customDateTimePicker1.Visible = false;
}
protected override void Abort(int rowNum)
{
isEditing = false;
customDateTimePicker1.ValueChanged -=
new EventHandler(TimePickerValueChanged);
Invalidate();
}
protected override bool Commit
(CurrencyManager dataSource, int rowNum)
{
customDateTimePicker1.Bounds = Rectangle.Empty;
customDateTimePicker1.ValueChanged -=
new EventHandler(TimePickerValueChanged);
if (!isEditing)
return true;
isEditing = false;
try
{
DateTime value = customDateTimePicker1.Value;
SetColumnValueAtRow(dataSource, rowNum, value);
}
catch (Exception)
{
Abort(rowNum);
return false;
}
Invalidate();
return true;
}
protected override void Edit(
CurrencyManager source,
int rowNum,
Rectangle bounds,
bool readOnly,
string displayText,
bool cellIsVisible)
{
DateTime value = (DateTime)
GetColumnValueAtRow(source, rowNum);
if (cellIsVisible)
{
customDateTimePicker1.Bounds = new Rectangle
(bounds.X + 2, bounds.Y + 2,
bounds.Width - 4, bounds.Height - 4);
customDateTimePicker1.Value = value;
customDateTimePicker1.Visible = true;
customDateTimePicker1.ValueChanged +=
new EventHandler(TimePickerValueChanged);
}
else
{
customDateTimePicker1.Value = value;
customDateTimePicker1.Visible = false;
}
if (customDateTimePicker1.Visible)
DataGridTableStyle.DataGrid.Invalidate(bounds);
customDateTimePicker1.Focus();
}
protected override Size GetPreferredSize(
Graphics g,
object value)
{
return new Size(100, customDateTimePicker1.PreferredHeight + 4);
}
protected override int GetMinimumHeight()
{
return customDateTimePicker1.PreferredHeight + 4;
}
protected override int GetPreferredHeight(Graphics g,
object value)
{
return customDateTimePicker1.PreferredHeight + 4;
}
protected override void Paint(Graphics g,
Rectangle bounds,
CurrencyManager source,
int rowNum)
{
Paint(g, bounds, source, rowNum, false);
}
protected override void Paint(
Graphics g,
Rectangle bounds,
CurrencyManager source,
int rowNum,
bool alignToRight)
{
Paint(
g, bounds,
source,
rowNum,
Brushes.Red,
Brushes.Blue,
alignToRight);
}
protected override void Paint(
Graphics g,
Rectangle bounds,
CurrencyManager source,
int rowNum,
Brush backBrush,
Brush foreBrush,
bool alignToRight)
{
DateTime date = (DateTime)
GetColumnValueAtRow(source, rowNum);
Rectangle rect = bounds;
g.FillRectangle(backBrush, rect);
rect.Offset(0, 2);
rect.Height -= 2;
g.DrawString(date.ToString("d"),
this.DataGridTableStyle.DataGrid.Font,
foreBrush, rect);
}
protected override void SetDataGridInColumn(DataGrid value)
{
base.SetDataGridInColumn(value);
if (customDateTimePicker1.Parent != null)
{
customDateTimePicker1.Parent.Controls.Remove
(customDateTimePicker1);
}
if (value != null)
{
value.Controls.Add(customDateTimePicker1);
}
}
private void TimePickerValueChanged(object sender, EventArgs e)
{
// Remove the handler to prevent it from being called twice in a row.
customDateTimePicker1.ValueChanged -=
new EventHandler(TimePickerValueChanged);
this.isEditing = true;
base.ColumnStartedEditing(customDateTimePicker1);
}
}
public class CustomDateTimePicker : DateTimePicker
{
protected override bool ProcessKeyMessage(ref Message m)
{
// Keep all the keys for the DateTimePicker.
return ProcessKeyEventArgs(ref m);
}
}
public class MyForm : Form
{
private DataTable namesDataTable;
private DataGrid grid = new DataGrid();
public MyForm() : base()
{
InitForm();
namesDataTable = new DataTable("NamesTable");
namesDataTable.Columns.Add(new DataColumn("Name"));
DataColumn dateColumn = new DataColumn
("Date", typeof(DateTime));
dateColumn.DefaultValue = DateTime.Today;
namesDataTable.Columns.Add(dateColumn);
DataSet namesDataSet = new DataSet();
namesDataSet.Tables.Add(namesDataTable);
grid.DataSource = namesDataSet;
grid.DataMember = "NamesTable";
AddGridStyle();
AddData();
}
private void AddGridStyle()
{
DataGridTableStyle myGridStyle = new DataGridTableStyle();
myGridStyle.MappingName = "NamesTable";
DataGridTextBoxColumn nameColumnStyle =
new DataGridTextBoxColumn();
nameColumnStyle.MappingName = "Name";
nameColumnStyle.HeaderText = "Name";
myGridStyle.GridColumnStyles.Add(nameColumnStyle);
DataGridTimePickerColumn timePickerColumnStyle =
new DataGridTimePickerColumn();
timePickerColumnStyle.MappingName = "Date";
timePickerColumnStyle.HeaderText = "Date";
timePickerColumnStyle.Width = 100;
myGridStyle.GridColumnStyles.Add(timePickerColumnStyle);
grid.TableStyles.Add(myGridStyle);
}
private void AddData()
{
DataRow dRow = namesDataTable.NewRow();
dRow["Name"] = "Name 1";
dRow["Date"] = new DateTime(2001, 12, 01);
namesDataTable.Rows.Add(dRow);
dRow = namesDataTable.NewRow();
dRow["Name"] = "Name 2";
dRow["Date"] = new DateTime(2001, 12, 04);
namesDataTable.Rows.Add(dRow);
dRow = namesDataTable.NewRow();
dRow["Name"] = "Name 3";
dRow["Date"] = new DateTime(2001, 12, 29);
namesDataTable.Rows.Add(dRow);
dRow = namesDataTable.NewRow();
dRow["Name"] = "Name 4";
dRow["Date"] = new DateTime(2001, 12, 13);
namesDataTable.Rows.Add(dRow);
dRow = namesDataTable.NewRow();
dRow["Name"] = "Name 5";
dRow["Date"] = new DateTime(2001, 12, 21);
namesDataTable.Rows.Add(dRow);
namesDataTable.AcceptChanges();
}
private void InitForm()
{
this.Size = new Size(500, 500);
grid.Size = new Size(350, 250);
grid.TabStop = true;
grid.TabIndex = 1;
this.StartPosition = FormStartPosition.CenterScreen;
this.Controls.Add(grid);
}
[STAThread]
public static void Main()
{
MyForm myForm1 = new MyForm();
myForm1.ShowDialog();
}
}
[C++]
#using <mscorlib.dll>
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
#using <System.Data.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Data;
using namespace System::Windows::Forms;
using namespace System::Drawing;
// This example shows how to create your own column style that
// hosts a control, in this case, a DateTimePicker.
public __gc class CustomDateTimePicker : public DateTimePicker
{
protected:
bool ProcessKeyMessage(Message* m)
{
// Keep all the keys for the DateTimePicker.
return ProcessKeyEventArgs(m);
}
};
public __gc class DataGridTimePickerColumn : public DataGridColumnStyle
{
private:
CustomDateTimePicker* customDateTimePicker1;
// The isEditing field tracks whether or not the user is
// editing data with the hosted control.
bool isEditing;
public:
DataGridTimePickerColumn()
{
customDateTimePicker1 = new CustomDateTimePicker();
customDateTimePicker1->Visible = false;
}
protected:
void Abort(int /*rowNum*/)
{
isEditing = false;
customDateTimePicker1->ValueChanged -=
new EventHandler(this, &DataGridTimePickerColumn::TimePickerValueChanged);
Invalidate();
}
protected:
bool Commit
(CurrencyManager* dataSource, int rowNum)
{
customDateTimePicker1->Bounds = Rectangle::Empty;
customDateTimePicker1->ValueChanged -=
new EventHandler(this, &DataGridTimePickerColumn::TimePickerValueChanged);
if (!isEditing)
return true;
isEditing = false;
try
{
DateTime value = customDateTimePicker1->Value;
SetColumnValueAtRow(dataSource, rowNum,__box(value));
}
catch (Exception*)
{
Abort(rowNum);
return false;
}
Invalidate();
return true;
}
protected:
void Edit(
CurrencyManager* source,
int rowNum,
Rectangle bounds,
bool /*readOnly*/,
String* /*displayText*/,
bool cellIsVisible)
{
DateTime value = *dynamic_cast<DateTime*>(GetColumnValueAtRow(source, rowNum));
if (cellIsVisible)
{
customDateTimePicker1->Bounds = Rectangle
(bounds.X + 2, bounds.Y + 2,
bounds.Width - 4, bounds.Height - 4);
customDateTimePicker1->Value = value;
customDateTimePicker1->Visible = true;
customDateTimePicker1->ValueChanged +=
new EventHandler(this, &DataGridTimePickerColumn::TimePickerValueChanged);
}
else
{
customDateTimePicker1->Value = value;
customDateTimePicker1->Visible = false;
}
if (customDateTimePicker1->Visible)
DataGridTableStyle->DataGrid->Invalidate(bounds);
customDateTimePicker1->Focus();
}
protected:
Size GetPreferredSize(
Graphics* /*g*/,
Object* /*value*/)
{
return Size(100, customDateTimePicker1->PreferredHeight + 4);
}
protected:
int GetMinimumHeight()
{
return customDateTimePicker1->PreferredHeight + 4;
}
protected:
int GetPreferredHeight(Graphics* /*g*/,
Object* /*value*/)
{
return customDateTimePicker1->PreferredHeight + 4;
}
protected:
void Paint(Graphics* g,
Rectangle bounds,
CurrencyManager* source,
int rowNum)
{
Paint(g, bounds, source, rowNum, false);
}
protected:
void Paint(
Graphics* g,
Rectangle bounds,
CurrencyManager* source,
int rowNum,
bool alignToRight)
{
Paint(
g, bounds,
source,
rowNum,
Brushes::Red,
Brushes::Blue,
alignToRight);
}
protected:
void Paint(
Graphics* g,
Rectangle bounds,
CurrencyManager* source,
int rowNum,
Brush* backBrush,
Brush* foreBrush,
bool /*alignToRight*/)
{
DateTime date = *dynamic_cast<DateTime*>(GetColumnValueAtRow(source, rowNum));
Rectangle rect = bounds;
g->FillRectangle(backBrush, rect);
rect.Offset(0, 2);
rect.Height -= 2;
g->DrawString(date.ToString(S"d"),
this->DataGridTableStyle->DataGrid->Font,
foreBrush, RectangleF::op_Implicit(rect));
}
protected:
void SetDataGridInColumn(DataGrid* value)
{
DataGridColumnStyle::SetDataGridInColumn(value);
if (customDateTimePicker1->Parent != 0)
{
customDateTimePicker1->Parent->Controls->Remove
(customDateTimePicker1);
}
if (value != 0)
{
value->Controls->Add(customDateTimePicker1);
}
}
private:
void TimePickerValueChanged(Object* /*sender*/, EventArgs* /*e*/)
{
// Remove the handler to prevent it from being called twice in a row.
customDateTimePicker1->ValueChanged -=
new EventHandler(this, &DataGridTimePickerColumn::TimePickerValueChanged);
this->isEditing = true;
DataGridColumnStyle::ColumnStartedEditing(customDateTimePicker1);
}
};
public __gc class MyForm : public Form
{
private:
DataTable* namesDataTable;
DataGrid* grid;
public:
MyForm()
{
grid = new DataGrid();
InitForm();
namesDataTable = new DataTable(S"NamesTable");
namesDataTable->Columns->Add(new DataColumn(S"Name"));
DataColumn* dateColumn = new DataColumn
(S"Date", __typeof(DateTime));
dateColumn->DefaultValue = __box(DateTime::Today);
namesDataTable->Columns->Add(dateColumn);
DataSet* namesDataSet = new DataSet();
namesDataSet->Tables->Add(namesDataTable);
grid->DataSource = namesDataSet;
grid->DataMember = S"NamesTable";
AddGridStyle();
AddData();
}
private:
void AddGridStyle()
{
DataGridTableStyle* myGridStyle = new DataGridTableStyle();
myGridStyle->MappingName = S"NamesTable";
DataGridTextBoxColumn* nameColumnStyle =
new DataGridTextBoxColumn();
nameColumnStyle->MappingName = S"Name";
nameColumnStyle->HeaderText = S"Name";
myGridStyle->GridColumnStyles->Add(nameColumnStyle);
DataGridTimePickerColumn* timePickerColumnStyle =
new DataGridTimePickerColumn();
timePickerColumnStyle->MappingName = S"Date";
timePickerColumnStyle->HeaderText = S"Date";
timePickerColumnStyle->Width = 100;
myGridStyle->GridColumnStyles->Add(timePickerColumnStyle);
grid->TableStyles->Add(myGridStyle);
}
private:
void AddData()
{
DataRow* dRow = namesDataTable->NewRow();
dRow->Item[S"Name"] = S"Name 1";
dRow->Item[S"Date"] = __box(DateTime(2001, 12, 01));
namesDataTable->Rows->Add(dRow);
dRow = namesDataTable->NewRow();
dRow->Item[S"Name"] = S"Name 2";
dRow->Item[S"Date"] = __box(DateTime(2001, 12, 04));
namesDataTable->Rows->Add(dRow);
dRow = namesDataTable->NewRow();
dRow->Item[S"Name"] = S"Name 3";
dRow->Item[S"Date"] = __box(DateTime(2001, 12, 29));
namesDataTable->Rows->Add(dRow);
dRow = namesDataTable->NewRow();
dRow->Item[S"Name"] = S"Name 4";
dRow->Item[S"Date"] = __box(DateTime(2001, 12, 13));
namesDataTable->Rows->Add(dRow);
dRow = namesDataTable->NewRow();
dRow->Item[S"Name"] = S"Name 5";
dRow->Item[S"Date"] = __box(DateTime(2001, 12, 21));
namesDataTable->Rows->Add(dRow);
namesDataTable->AcceptChanges();
}
private:
void InitForm()
{
this->Size = System::Drawing::Size(500, 500);
grid->Size = System::Drawing::Size(350, 250);
grid->TabStop = true;
grid->TabIndex = 1;
this->StartPosition = FormStartPosition::CenterScreen;
this->Controls->Add(grid);
}
};
[STAThread]
int main()
{
MyForm* myForm1 = new MyForm();
myForm1->ShowDialog();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Windows.Forms
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)
参照
DataGridColumnStyle メンバ | System.Windows.Forms 名前空間 | DataColumn | DataGrid | DataGridBoolColumn | DataGridTextBox | DataGridTableStyle | DataView | GridColumnStylesCollection