DataGridColumnStyle Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Upozornění
DataGrid is provided for binary compatibility with .NET Framework and is not intended to be used directly from your code. Use DataGridView instead.
Určuje vzhled, formátování textu a chování DataGrid ovládacího sloupce. Tato třída je abstraktní.
public ref class DataGridColumnStyle abstract : System::ComponentModel::Component, System::Windows::Forms::IDataGridColumnStyleEditingNotificationService
public abstract class DataGridColumnStyle : System.ComponentModel.Component, System.Windows.Forms.IDataGridColumnStyleEditingNotificationService
[System.ComponentModel.Browsable(false)]
[System.Obsolete("`DataGrid` is provided for binary compatibility with .NET Framework and is not intended to be used directly from your code. Use `DataGridView` instead.", false, DiagnosticId="WFDEV006", UrlFormat="https://aka.ms/winforms-warnings/{0}")]
public abstract class DataGridColumnStyle : System.ComponentModel.Component, System.Windows.Forms.IDataGridColumnStyleEditingNotificationService
type DataGridColumnStyle = class
inherit Component
interface IDataGridColumnStyleEditingNotificationService
[<System.ComponentModel.Browsable(false)>]
[<System.Obsolete("`DataGrid` is provided for binary compatibility with .NET Framework and is not intended to be used directly from your code. Use `DataGridView` instead.", false, DiagnosticId="WFDEV006", UrlFormat="https://aka.ms/winforms-warnings/{0}")>]
type DataGridColumnStyle = class
inherit Component
interface IDataGridColumnStyleEditingNotificationService
Public MustInherit Class DataGridColumnStyle
Inherits Component
Implements IDataGridColumnStyleEditingNotificationService
- Dědičnost
- Odvozené
- Atributy
- Implementuje
Příklady
Následující příklad kódu vytvoří DataGridColumnStyle , který je hostitelem DateTimePicker ovládacího prvku.
#using <System.dll>
#using <System.Data.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::Data;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System::Security::Permissions;
// This example shows how to create your own column style that
// hosts a control, in this case, a DateTimePicker.
public ref class CustomDateTimePicker : public DateTimePicker
{
protected:
[SecurityPermission(SecurityAction::Demand, Flags=SecurityPermissionFlag::UnmanagedCode)]
virtual bool ProcessKeyMessage( Message% m ) override
{
// Keep all the keys for the DateTimePicker.
return ProcessKeyEventArgs( m );
}
};
public ref 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 = gcnew CustomDateTimePicker;
customDateTimePicker1->Visible = false;
}
protected:
virtual void Abort( int /*rowNum*/ ) override
{
isEditing = false;
customDateTimePicker1->ValueChanged -=
gcnew EventHandler( this, &DataGridTimePickerColumn::TimePickerValueChanged );
Invalidate();
}
virtual bool Commit( CurrencyManager^ dataSource, int rowNum ) override
{
customDateTimePicker1->Bounds = Rectangle::Empty;
customDateTimePicker1->ValueChanged -=
gcnew EventHandler( this, &DataGridTimePickerColumn::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;
}
virtual void Edit(
CurrencyManager^ source,
int rowNum,
Rectangle bounds,
bool /*readOnly*/,
String^ /*displayText*/,
bool cellIsVisible ) override
{
DateTime value = (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 +=
gcnew EventHandler( this, &DataGridTimePickerColumn::TimePickerValueChanged );
}
else
{
customDateTimePicker1->Value = value;
customDateTimePicker1->Visible = false;
}
if ( customDateTimePicker1->Visible )
DataGridTableStyle->DataGrid->Invalidate( bounds );
customDateTimePicker1->Focus();
}
virtual System::Drawing::Size GetPreferredSize(
Graphics^ /*g*/,
Object^ /*value*/ ) override
{
return Size( 100, customDateTimePicker1->PreferredHeight + 4);
}
virtual int GetMinimumHeight() override
{
return customDateTimePicker1->PreferredHeight + 4;
}
virtual int GetPreferredHeight( Graphics^ /*g*/,
Object^ /*value*/ ) override
{
return customDateTimePicker1->PreferredHeight + 4;
}
virtual void Paint( Graphics^ g,
Rectangle bounds,
CurrencyManager^ source,
int rowNum ) override
{
Paint( g, bounds, source, rowNum, false );
}
virtual void Paint(
Graphics^ g,
Rectangle bounds,
CurrencyManager^ source,
int rowNum,
bool alignToRight ) override
{
Paint(
g, bounds,
source,
rowNum,
Brushes::Red,
Brushes::Blue,
alignToRight );
}
virtual void Paint(
Graphics^ g,
Rectangle bounds,
CurrencyManager^ source,
int rowNum,
Brush^ backBrush,
Brush^ foreBrush,
bool /*alignToRight*/ ) override
{
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 );
}
virtual void SetDataGridInColumn( DataGrid^ value ) override
{
DataGridColumnStyle::SetDataGridInColumn( value );
if ( customDateTimePicker1->Parent != nullptr )
{
customDateTimePicker1->Parent->Controls->Remove
( customDateTimePicker1 );
}
if ( value != nullptr )
{
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 -=
gcnew EventHandler( this, &DataGridTimePickerColumn::TimePickerValueChanged );
this->isEditing = true;
DataGridColumnStyle::ColumnStartedEditing( customDateTimePicker1 );
}
};
public ref class MyForm: public Form
{
private:
DataTable^ namesDataTable;
DataGrid^ grid;
public:
MyForm()
{
grid = gcnew DataGrid;
InitForm();
namesDataTable = gcnew DataTable( "NamesTable" );
namesDataTable->Columns->Add( gcnew DataColumn( "Name" ) );
DataColumn^ dateColumn = gcnew DataColumn
( "Date",DateTime::typeid );
dateColumn->DefaultValue = DateTime::Today;
namesDataTable->Columns->Add( dateColumn );
DataSet^ namesDataSet = gcnew DataSet;
namesDataSet->Tables->Add( namesDataTable );
grid->DataSource = namesDataSet;
grid->DataMember = "NamesTable";
AddGridStyle();
AddData();
}
private:
void AddGridStyle()
{
DataGridTableStyle^ myGridStyle = gcnew DataGridTableStyle;
myGridStyle->MappingName = "NamesTable";
DataGridTextBoxColumn^ nameColumnStyle =
gcnew DataGridTextBoxColumn;
nameColumnStyle->MappingName = "Name";
nameColumnStyle->HeaderText = "Name";
myGridStyle->GridColumnStyles->Add( nameColumnStyle );
DataGridTimePickerColumn^ timePickerColumnStyle =
gcnew DataGridTimePickerColumn;
timePickerColumnStyle->MappingName = "Date";
timePickerColumnStyle->HeaderText = "Date";
timePickerColumnStyle->Width = 100;
myGridStyle->GridColumnStyles->Add( timePickerColumnStyle );
grid->TableStyles->Add( myGridStyle );
}
void AddData()
{
DataRow^ dRow = namesDataTable->NewRow();
dRow->default[ "Name" ] = "Name 1";
dRow->default[ "Date" ] = DateTime(2001,12,01);
namesDataTable->Rows->Add( dRow );
dRow = namesDataTable->NewRow();
dRow->default[ "Name" ] = "Name 2";
dRow->default[ "Date" ] = DateTime(2001,12,04);
namesDataTable->Rows->Add( dRow );
dRow = namesDataTable->NewRow();
dRow->default[ "Name" ] = "Name 3";
dRow->default[ "Date" ] = DateTime(2001,12,29);
namesDataTable->Rows->Add( dRow );
dRow = namesDataTable->NewRow();
dRow->default[ "Name" ] = "Name 4";
dRow->default[ "Date" ] = DateTime(2001,12,13);
namesDataTable->Rows->Add( dRow );
dRow = namesDataTable->NewRow();
dRow->default[ "Name" ] = "Name 5";
dRow->default[ "Date" ] = DateTime(2001,12,21);
namesDataTable->Rows->Add( dRow );
namesDataTable->AcceptChanges();
}
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()
{
Application::Run( gcnew MyForm );
}
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()
{
Application.Run(new MyForm());
}
}
Imports System.Data
Imports System.Windows.Forms
Imports System.Drawing
Imports System.ComponentModel
Imports System.Security.Permissions
' 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 (customDateTimePicker1.Parent IsNot Nothing) Then
customDateTimePicker1.Parent.Controls.Remove(customDateTimePicker1)
End If
If (value IsNot 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
<SecurityPermissionAttribute( _
SecurityAction.LinkDemand, Flags := SecurityPermissionFlag.UnmanagedCode)> _
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
Poznámky
K kolekci DataGridColumnStyle objektů (the GridColumnStylesCollection) se přistupuje prostřednictvím System.Windows.Forms.DataGrid vlastnosti ovládacího prvku TableStyles .
Ovládací System.Windows.Forms.DataGrid prvek automaticky vytvoří kolekci DataGridColumnStyle objektů za vás při nastavení DataSource vlastnosti na příslušný zdroj dat. Objekty vytvořené ve skutečnosti jsou instance jedné z následujících tříd, které dědí z DataGridColumnStyle: DataGridBoolColumn nebo DataGridTextBoxColumn třídy.
Chcete-li formátovat zobrazení dat, nastavte Format vlastnost DataGridTextBoxColumn třídy na jednu z hodnot formátování. Další informace o platných formátových hodnotách naleznete v tématu Typy formátování a vlastní řetězce formátu data a času.
Můžete také vytvořit vlastní sadu DataGridColumnStyle objektů a přidat je do objektu GridColumnStylesCollection. Když to uděláte, musíte nastavit MappingName styl každého sloupce na ColumnNameDataColumn synchronizaci zobrazení sloupců se skutečnými daty.
Upozornění
Vždy vytvořte DataGridColumnStyle objekty a před GridColumnStylesCollection přidáním DataGridTableStyle objektů do objektu GridTableStylesCollection. Když do kolekce přidáte prázdnou DataGridTableStyle hodnotu s platnou MappingName hodnotou, DataGridColumnStyle objekty se automaticky vygenerují za vás. V důsledku toho bude vyvolán výjimka, pokud se pokusíte přidat nové DataGridColumnStyle objekty s duplicitními MappingName hodnotami do GridColumnStylesCollection.
Pokud je jedna z odvozených tříd vytvořena ovládacím System.Windows.Forms.DataGrid prvek, třída vytvořená závisí na DataTypeDataColumn přidružené k objektu DataGridColumnStyle . Například s nastavenou DataColumnDataType sadou System.Boolean bude přidružena k objektu DataGridBoolColumn. K určení typu libovolného DataGridColumnStyletypu použijte metodu GetType .
Chcete-li vytvořit vlastní třídy sloupců, můžete dědit z DataGridColumnStyle. Můžete to udělat, abyste vytvořili speciální sloupce, které hostují ovládací prvky, jak je znázorněno DataGridTextBox třídou, která je hostitelem TextBox ovládacího prvku. Můžete například hostovat Image ovládací prvek, který bude zobrazovat obrázky ve sloupcích, nebo můžete vytvořit vlastní uživatelský ovládací prvek pro hostování ve sloupci.
DataGridColumnStyle Funkce by neměly být zaměňovány s funkcí tohoto DataColumn. DataColumn Zatímco obsahuje vlastnosti a metody vhodné k vytvoření schématu tabulky dat, DataGridColumnStyle obsahuje vlastnosti a metody související s vzhledem jednotlivých sloupců na obrazovce.
Pokud řádek obsahuje DBNull.Valuetext zobrazený ve sloupci, lze nastavit vlastnost NullText .
Třída DataGridColumnStyle také umožňuje určit chování sloupce při změně jeho dat. Metody a BeginUpdateEndUpdate metody dočasně pozastaví výkres sloupce, zatímco se provádí velké aktualizace dat sloupce. Bez této funkce by každá změna v každé buňce mřížky byla okamžitě vykreslena; to může být rušivé pro uživatele a odpovědnost za plnění.
Několik metod umožňuje monitorování sloupce při úpravách uživatelem, včetně Edit událostí a Commit událostí.
Většina vlastností a metod třídy je přizpůsobena pro řízení vzhledu sloupce. Ale několik, například GetColumnValueAtRow a SetColumnValueAtRow umožňují prozkoumat a změnit hodnotu v zadané buňce.
Poznámky pro implementátory
Při dědění z DataGridColumnStyle, musíte přepsat následující členy: Abort(Int32), Commit(CurrencyManager, Int32), Edit(CurrencyManager, Int32, Rectangle, Boolean)a Paint(Graphics, Rectangle, CurrencyManager, Int32) (dvakrát).
Konstruktory
| Name | Description |
|---|---|
| DataGridColumnStyle() |
Zastaralé.
V odvozené třídě inicializuje novou instanci DataGridColumnStyle třídy. |
| DataGridColumnStyle(PropertyDescriptor) |
Zastaralé.
Inicializuje novou instanci DataGridColumnStyle třídy se zadaným PropertyDescriptor. |
Vlastnosti
| Name | Description |
|---|---|
| Alignment |
Zastaralé.
Získá nebo nastaví zarovnání textu ve sloupci. |
| CanRaiseEvents |
Zastaralé.
Získá hodnotu určující, zda komponenta může vyvolat událost. (Zděděno od Component) |
| Container |
Zastaralé.
Získá ten IContainer , který obsahuje Component. (Zděděno od Component) |
| DataGridTableStyle |
Zastaralé.
DataGridTableStyle Získá sloupec. |
| DesignMode |
Zastaralé.
Získá hodnotu, která označuje, zda Component je aktuálně v režimu návrhu. (Zděděno od Component) |
| Events |
Zastaralé.
Získá seznam obslužných rutin událostí, které jsou připojeny k tomuto Component. (Zděděno od Component) |
| FontHeight |
Zastaralé.
Získá výšku písma sloupce. |
| HeaderAccessibleObject |
Zastaralé.
AccessibleObject Získá sloupec. |
| HeaderText |
Zastaralé.
Získá nebo nastaví text záhlaví sloupce. |
| MappingName |
Zastaralé.
Získá nebo nastaví název datového členu pro mapování stylu sloupce na. |
| NullText |
Zastaralé.
Získá nebo nastaví text, který se zobrazí, když sloupec obsahuje |
| PropertyDescriptor |
Zastaralé.
Získá nebo nastaví PropertyDescriptor , který určuje atributy dat zobrazených pomocí DataGridColumnStyle. |
| ReadOnly |
Zastaralé.
Získá nebo nastaví hodnotu určující, zda lze data ve sloupci upravovat. |
| Site |
Zastaralé.
Získá nebo nastaví ISite .Component (Zděděno od Component) |
| Width |
Zastaralé.
Získá nebo nastaví šířku sloupce. |
Metody
| Name | Description |
|---|---|
| Abort(Int32) |
Zastaralé.
Při přepsání v odvozené třídě zahájí požadavek na přerušení editační procedury. |
| BeginUpdate() |
Zastaralé.
Pozastaví obraz sloupce, dokud EndUpdate() se metoda nevolá. |
| CheckValidDataSource(CurrencyManager) |
Zastaralé.
Vyvolá výjimku, pokud DataGrid nemá platný zdroj dat nebo pokud tento sloupec není namapován na platnou vlastnost ve zdroji dat. |
| ColumnStartedEditing(Control) |
Zastaralé.
DataGrid Informuje uživatele, že začal upravovat sloupec. |
| Commit(CurrencyManager, Int32) |
Zastaralé.
Při přepsání v odvozené třídě zahájí požadavek na dokončení procedury úprav. |
| ConcedeFocus() |
Zastaralé.
Upozorní sloupec, že musí převést fokus na ovládací prvek, který hostuje. |
| CreateHeaderAccessibleObject() |
Zastaralé.
AccessibleObject Získá sloupec. |
| CreateObjRef(Type) |
Zastaralé.
Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího ke komunikaci se vzdáleným objektem. (Zděděno od MarshalByRefObject) |
| Dispose() |
Zastaralé.
Uvolní všechny prostředky používané nástrojem Component. (Zděděno od Component) |
| Dispose(Boolean) |
Zastaralé.
Uvolní nespravované prostředky používané Component a volitelně uvolní spravované prostředky. (Zděděno od Component) |
| Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean) |
Zastaralé.
Při přepsání v odvozené třídě připraví buňku pro úpravy. |
| Edit(CurrencyManager, Int32, Rectangle, Boolean, String) |
Zastaralé.
Připraví buňku pro úpravy pomocí zadaného CurrencyManagerčísla řádku a Rectangle parametrů. |
| Edit(CurrencyManager, Int32, Rectangle, Boolean) |
Zastaralé.
Připraví buňku pro úpravy. |
| EndUpdate() |
Zastaralé.
Obnoví obraz sloupců pozastavených voláním BeginUpdate() metody. |
| EnterNullValue() |
Zastaralé.
Zadá do Value sloupce. |
| Equals(Object) |
Zastaralé.
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetColumnValueAtRow(CurrencyManager, Int32) |
Zastaralé.
Získá hodnotu v zadaném řádku ze zadaného CurrencyManager. |
| GetHashCode() |
Zastaralé.
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetLifetimeService() |
Zastaralé.
Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| GetMinimumHeight() |
Zastaralé.
Při přepsání v odvozené třídě získá minimální výšku řádku. |
| GetPreferredHeight(Graphics, Object) |
Zastaralé.
Při přepsání v odvozené třídě získá výšku použitou pro automatickou změnu velikosti sloupců. |
| GetPreferredSize(Graphics, Object) |
Zastaralé.
Při přepsání v odvozené třídě získá šířku a výšku zadané hodnoty. Šířka a výška se používají, když uživatel přejde na DataGridTableStyle příkaz DataGridColumnStyle. |
| GetService(Type) |
Zastaralé.
Vrátí objekt, který představuje službu poskytovanou objektem Component nebo jeho Container. (Zděděno od Component) |
| GetType() |
Zastaralé.
Získá Type aktuální instance. (Zděděno od Object) |
| InitializeLifetimeService() |
Zastaralé.
Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| Invalidate() |
Zastaralé.
Překreslí sloupec a způsobí odeslání malování zprávy do ovládacího prvku. |
| MemberwiseClone() |
Zastaralé.
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| MemberwiseClone(Boolean) |
Zastaralé.
Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu. (Zděděno od MarshalByRefObject) |
| Paint(Graphics, Rectangle, CurrencyManager, Int32, Boolean) |
Zastaralé.
Při přepsání v odvozené třídě, maluje DataGridColumnStyle se zadaným Graphics, Rectangle, , CurrencyManagerčíslo řádku a zarovnání. |
| Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean) |
Zastaralé.
Nakreslí zadanou DataGridColumnStyleGraphicshodnotu , , RectangleCurrencyManager, číslo řádku, barvu pozadí, barvu popředí a zarovnání. |
| Paint(Graphics, Rectangle, CurrencyManager, Int32) |
Zastaralé.
DataGridColumnStyle Nakreslí zadané Graphicsčíslo , Rectangle, CurrencyManagera číslo řádku. |
| ReleaseHostedControl() |
Zastaralé.
Umožňuje sloupci uvolnit prostředky v případě, že ovládací prvek, který hostuje, není potřeba. |
| ResetHeaderText() |
Zastaralé.
HeaderText Obnoví výchozí hodnotu |
| SetColumnValueAtRow(CurrencyManager, Int32, Object) |
Zastaralé.
Nastaví hodnotu v zadaném řádku s hodnotou ze zadaného CurrencyManagerřádku . |
| SetDataGrid(DataGrid) |
Zastaralé.
DataGrid Nastaví ovládací prvek, do kterého tento sloupec patří. |
| SetDataGridInColumn(DataGrid) |
Zastaralé.
DataGrid Nastaví sloupec. |
| ToString() |
Zastaralé.
String Vrátí hodnotu obsahující název Component, pokud existuje. Tato metoda by neměla být přepsána. (Zděděno od Component) |
| UpdateUI(CurrencyManager, Int32, String) |
Zastaralé.
Aktualizuje hodnotu zadaného řádku s daným textem. |
Událost
| Name | Description |
|---|---|
| AlignmentChanged |
Zastaralé.
Nastane, když se Alignment změní hodnota vlastnosti. |
| Disposed |
Zastaralé.
Nastane, když komponenta je uvolněna voláním Dispose() metody. (Zděděno od Component) |
| FontChanged |
Zastaralé.
Nastane, když se změní písmo sloupce. |
| HeaderTextChanged |
Zastaralé.
Nastane, když se HeaderText změní hodnota vlastnosti. |
| MappingNameChanged |
Zastaralé.
Nastane, když se MappingName hodnota změní. |
| NullTextChanged |
Zastaralé.
Nastane, když se NullText hodnota změní. |
| PropertyDescriptorChanged |
Zastaralé.
Nastane, když se PropertyDescriptor změní hodnota vlastnosti. |
| ReadOnlyChanged |
Zastaralé.
Nastane, když se ReadOnly změní hodnota vlastnosti. |
| WidthChanged |
Zastaralé.
Nastane, když se Width změní hodnota vlastnosti. |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control) |
Zastaralé.
DataGrid Informuje ovládací prvek, že uživatel začal upravovat sloupec. |