DataGridColumnStyle Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Figyelemfelhívás
DataGrid is provided for binary compatibility with .NET Framework and is not intended to be used directly from your code. Use DataGridView instead.
Meghatározza a vezérlőoszlopok megjelenését, szövegformázását és viselkedését DataGrid . Ez az osztály absztrakt.
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
- Öröklődés
- Származtatott
- Attribútumok
- Megvalósítás
Példák
Az alábbi példakód egy DataGridColumnStyle vezérlőt üzemeltető vezérlőt DateTimePicker hoz létre.
#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
Megjegyzések
A DataGridColumnStyle objektumok (a GridColumnStylesCollection) gyűjteménye a System.Windows.Forms.DataGrid vezérlőelem TableStyles tulajdonságán keresztül érhető el.
A System.Windows.Forms.DataGrid vezérlő automatikusan létrehoz egy DataGridColumnStyle objektumgyűjteményt, amikor a DataSource tulajdonságot egy megfelelő adatforrásra állítja. A létrehozott objektumok valójában a következő osztályok egyikének példányai, amelyek a következőtől DataGridColumnStyleöröklődnek: DataGridBoolColumn vagy DataGridTextBoxColumn osztály.
Az adatmegjelenítés formázásához állítsa az FormatDataGridTextBoxColumn osztály tulajdonságát az egyik formázási értékre. Az érvényes formázási értékekről további információt a Formázástípusok és az Egyéni dátum- és időformátum-sztringek című témakörben talál.
Saját objektumkészletet DataGridColumnStyle is létrehozhat, és hozzáadhatja őket a GridColumnStylesCollection. Ha így tesz, minden MappingName egyes oszlopstílust egy-egyre ColumnName kell állítania, DataColumn hogy szinkronizálja az oszlopok megjelenítését a tényleges adatokkal.
Figyelmeztetés
Mindig hozzon létre DataGridColumnStyle objektumokat, és vegye fel őket az GridColumnStylesCollection objektumba, mielőtt objektumokat ad DataGridTableStyle a GridTableStylesCollection. Ha egy üres, érvényes DataGridTableStyle értékkel rendelkező értéket MappingName ad hozzá a gyűjteményhez, DataGridColumnStyle a rendszer automatikusan létrehozza az objektumokat. Következésképpen kivétel jelenik meg, ha ismétlődő értékekkel DataGridColumnStyle rendelkező új MappingName objektumokat próbál hozzáadni a GridColumnStylesCollection.
Ha az egyik származtatott osztályt egy System.Windows.Forms.DataGrid vezérlőelem példányosít, a létrehozott osztály az DataType objektumhoz társított DataColumnDataGridColumnStyle függ. Például egy DataColumn olyan készletet, amelynek a készlete DataTypeSystem.Boolean hozzá lesz rendelve egy DataGridBoolColumn. Az egyik DataGridColumnStyletípusának meghatározásához használja a metódust GetType .
Saját oszloposztályok létrehozásához örökölheti a függvényt DataGridColumnStyle. Ezt érdemes lehet megtennie, hogy olyan speciális oszlopokat hozzon létre, amelyek a vezérlőket vezérli, ahogy azt az DataGridTextBox osztály is példázzák, amely a TextBox vezérlőt üzemelteti. Üzemeltethet például egy vezérlőt Image , amely oszlopokban jeleníti meg a képeket, vagy létrehozhat saját felhasználói vezérlőt az oszlopban való gazdagépként.
A funkció nem DataGridColumnStyle tévesztendő össze a DataColumn. Míg az DataColumn adattábla sémájának létrehozásához szükséges tulajdonságokat és metódusokat tartalmazza, az DataGridColumnStyle egyes oszlopok képernyőn való megjelenéséhez kapcsolódó tulajdonságokat és metódusokat tartalmazza.
Ha egy sor tartalmaz egy DBNull.Valueértéket, az oszlopban megjelenő szöveg beállítható a NullText tulajdonsággal.
Az DataGridColumnStyle osztály lehetővé teszi az oszlopok viselkedésének megadását is az adatok módosítása közben. A BeginUpdate metódusok ideiglenesen EndUpdate felfüggesztik az oszlop rajzát, miközben nagy frissítéseket végeznek az oszlop adatain. E funkció nélkül a rács minden cellájának minden módosítása azonnal megrajzolható; ez megzavarhatja a felhasználót és a teljesítményre vonatkozó felelősséget.
Számos módszer teszi lehetővé az oszlop figyelését, ahogy a felhasználó szerkeszti, beleértve az Edit eseményeket is Commit .
Az osztály legtöbb tulajdonsága és metódusa az oszlop megjelenésének szabályozására van szabva. De néhány, például az GetColumnValueAtRow , és SetColumnValueAtRow lehetővé teszi, hogy vizsgálja meg és módosítsa az értéket egy adott cellában.
Megjegyzések az implementálókhoz
Ha örököl, DataGridColumnStylefelül kell bírálnia a következő tagokat: Abort(Int32), Commit(CurrencyManager, Int32), Edit(CurrencyManager, Int32, Rectangle, Boolean)és Paint(Graphics, Rectangle, CurrencyManager, Int32) (kétszer).
Konstruktorok
| Name | Description |
|---|---|
| DataGridColumnStyle() |
Elavult.
Származtatott osztályban inicializálja az osztály új példányát DataGridColumnStyle . |
| DataGridColumnStyle(PropertyDescriptor) |
Elavult.
Inicializálja az osztály új példányát DataGridColumnStyle a megadott PropertyDescriptor. |
Tulajdonságok
| Name | Description |
|---|---|
| Alignment |
Elavult.
Lekéri vagy beállítja a szöveg igazítását egy oszlopban. |
| CanRaiseEvents |
Elavult.
Beolvas egy értéket, amely jelzi, hogy az összetevő képes-e eseményt létrehozni. (Öröklődés forrása Component) |
| Container |
Elavult.
Lekéri a IContainer .Component (Öröklődés forrása Component) |
| DataGridTableStyle |
Elavult.
Lekéri az DataGridTableStyle oszlopot. |
| DesignMode |
Elavult.
Olyan értéket kap, amely jelzi, hogy az Component aktuálisan tervezési módban van-e. (Öröklődés forrása Component) |
| Events |
Elavult.
Lekéri az ehhez Componentcsatolt eseménykezelők listáját. (Öröklődés forrása Component) |
| FontHeight |
Elavult.
Lekéri az oszlop betűtípusának magasságát. |
| HeaderAccessibleObject |
Elavult.
Lekéri az AccessibleObject oszlopot. |
| HeaderText |
Elavult.
Lekéri vagy beállítja az oszlopfejléc szövegét. |
| MappingName |
Elavult.
Lekéri vagy beállítja az adattag nevét az oszlopstílus leképezéséhez. |
| NullText |
Elavult.
Lekéri vagy beállítja az oszlop tartalmakor |
| PropertyDescriptor |
Elavult.
Lekéri vagy beállítja a |
| ReadOnly |
Elavult.
Lekéri vagy beállít egy értéket, amely jelzi, hogy az oszlopban lévő adatok szerkeszthetők-e. |
| Site |
Elavult.
Lekéri vagy megadja a ISite értékét a Component-hez. (Öröklődés forrása Component) |
| Width |
Elavult.
Lekéri vagy beállítja az oszlop szélességét. |
Metódusok
| Name | Description |
|---|---|
| Abort(Int32) |
Elavult.
Ha egy származtatott osztály felül van bírálva, egy szerkesztési eljárás megszakítására irányuló kérést kezdeményez. |
| BeginUpdate() |
Elavult.
Felfüggeszti az oszlop festését a metódus meghívásáig EndUpdate() . |
| CheckValidDataSource(CurrencyManager) |
Elavult.
Kivételt okoz, ha az DataGrid adatforrás nem rendelkezik érvényes adatforrással, vagy ha ez az oszlop nincs megfeleltetve az adatforrás érvényes tulajdonságának. |
| ColumnStartedEditing(Control) |
Elavult.
Tájékoztatja a DataGrid felhasználót, hogy megkezdte az oszlop szerkesztését. |
| Commit(CurrencyManager, Int32) |
Elavult.
Ha felül van bírálva egy származtatott osztályban, egy szerkesztési eljárás befejezésére irányuló kérelmet kezdeményez. |
| ConcedeFocus() |
Elavult.
Értesíti az oszlopot, hogy vissza kell adnia a fókuszt az általa üzemeltetett vezérlőre. |
| CreateHeaderAccessibleObject() |
Elavult.
Lekéri az AccessibleObject oszlopot. |
| CreateObjRef(Type) |
Elavult.
Létrehoz egy objektumot, amely tartalmazza a távoli objektumokkal való kommunikációhoz használt proxy létrehozásához szükséges összes releváns információt. (Öröklődés forrása MarshalByRefObject) |
| Dispose() |
Elavult.
Felszabadítja a .-hez használt összes erőforrást Component. (Öröklődés forrása Component) |
| Dispose(Boolean) |
Elavult.
Felszabadítja a felügyelt erőforrások által Component használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat. (Öröklődés forrása Component) |
| Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean) |
Elavult.
Ha felül van bírálva egy származtatott osztályban, előkészít egy cellát szerkesztésre. |
| Edit(CurrencyManager, Int32, Rectangle, Boolean, String) |
Elavult.
Előkészíti a cellát szerkesztésre a megadott CurrencyManager, sorszám és Rectangle paraméterek használatával. |
| Edit(CurrencyManager, Int32, Rectangle, Boolean) |
Elavult.
Előkészít egy cellát szerkesztésre. |
| EndUpdate() |
Elavult.
A metódus meghívásával folytatja a felfüggesztett oszlopok festését BeginUpdate() . |
| EnterNullValue() |
Elavult.
Beír egy Value értéket az oszlopba. |
| Equals(Object) |
Elavult.
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetColumnValueAtRow(CurrencyManager, Int32) |
Elavult.
Lekéri a megadott sor értékét a megadott CurrencyManagersorból. |
| GetHashCode() |
Elavult.
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetLifetimeService() |
Elavult.
Lekéri a példány élettartamszabályzatát vezérlő aktuális élettartam-szolgáltatásobjektumot. (Öröklődés forrása MarshalByRefObject) |
| GetMinimumHeight() |
Elavult.
Ha felül van bírálva egy származtatott osztályban, a sor minimális magasságát kapja meg. |
| GetPreferredHeight(Graphics, Object) |
Elavult.
Ha egy származtatott osztályban felül van bírálva, az oszlopok automatikus átméretezéséhez használt magasságot kapja meg. |
| GetPreferredSize(Graphics, Object) |
Elavult.
Ha felül van bírálva egy származtatott osztályban, a megadott érték szélességét és magasságát kapja meg. A szélességet és a magasságot akkor használja a rendszer, amikor a felhasználó DataGridTableStyle a DataGridColumnStyle. |
| GetService(Type) |
Elavult.
Olyan objektumot ad vissza, amely az általa vagy annak által ComponentContainernyújtott szolgáltatást jelöli. (Öröklődés forrása Component) |
| GetType() |
Elavult.
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| InitializeLifetimeService() |
Elavult.
Beolvas egy élettartam-szolgáltatásobjektumot a példány élettartam-szabályzatának szabályozásához. (Öröklődés forrása MarshalByRefObject) |
| Invalidate() |
Elavult.
Újrarajzozza az oszlopot, és festéküzenetet küld a vezérlőnek. |
| MemberwiseClone() |
Elavult.
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| MemberwiseClone(Boolean) |
Elavult.
Az aktuális MarshalByRefObject objektum sekély másolatát hozza létre. (Öröklődés forrása MarshalByRefObject) |
| Paint(Graphics, Rectangle, CurrencyManager, Int32, Boolean) |
Elavult.
Ha egy származtatott osztályban felül van bírálva, a megadott DataGridColumnStyle, , Graphicssorszámmal Rectangleés igazítással fest.CurrencyManager |
| Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean) |
Elavult.
DataGridColumnStyle A megadott Graphics, , RectanglesorszámCurrencyManager, háttérszín, előtérszín és igazítás használatával fest. |
| Paint(Graphics, Rectangle, CurrencyManager, Int32) |
Elavult.
DataGridColumnStyle A megadott Graphics, Rectangle, CurrencyManagerés sorszámmal festi a képet. |
| ReleaseHostedControl() |
Elavult.
Lehetővé teszi, hogy az oszlop felszabadítsa az erőforrásokat, ha nincs szükség az általa üzemeltetett vezérlőre. |
| ResetHeaderText() |
Elavult.
Alaphelyzetbe állítja az HeaderText alapértelmezett értéket. |
| SetColumnValueAtRow(CurrencyManager, Int32, Object) |
Elavult.
Egy megadott sor értékét egy megadott CurrencyManagersor értékével állítja be. |
| SetDataGrid(DataGrid) |
Elavult.
Beállítja azt a DataGrid vezérlőelemet, amelyhez ez az oszlop tartozik. |
| SetDataGridInColumn(DataGrid) |
Elavult.
Beállítja az DataGrid oszlopot. |
| ToString() |
Elavult.
String A ( ha van) nevet tartalmazó értéket Componentad vissza. Ezt a módszert nem szabad felülírni. (Öröklődés forrása Component) |
| UpdateUI(CurrencyManager, Int32, String) |
Elavult.
Frissíti egy adott sor értékét a megadott szöveggel. |
esemény
| Name | Description |
|---|---|
| AlignmentChanged |
Elavult.
Akkor fordul elő, ha a Alignment tulajdonság értéke megváltozik. |
| Disposed |
Elavult.
Akkor fordul elő, ha az összetevőt a metódus hívása megsemmisíti Dispose() . (Öröklődés forrása Component) |
| FontChanged |
Elavult.
Akkor fordul elő, ha az oszlop betűtípusa megváltozik. |
| HeaderTextChanged |
Elavult.
Akkor fordul elő, ha a HeaderText tulajdonság értéke megváltozik. |
| MappingNameChanged |
Elavult.
Akkor fordul elő, ha az MappingName érték megváltozik. |
| NullTextChanged |
Elavult.
Akkor fordul elő, ha az NullText érték megváltozik. |
| PropertyDescriptorChanged |
Elavult.
Akkor fordul elő, ha a PropertyDescriptor tulajdonság értéke megváltozik. |
| ReadOnlyChanged |
Elavult.
Akkor fordul elő, ha a ReadOnly tulajdonság értéke megváltozik. |
| WidthChanged |
Elavult.
Akkor fordul elő, ha a Width tulajdonság értéke megváltozik. |
Explicit interfész-implementációk
| Name | Description |
|---|---|
| IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control) |
Elavult.
Tájékoztatja a vezérlőt DataGrid , hogy a felhasználó megkezdte az oszlop szerkesztését. |