DataGridColumnStyle Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Attenzione
DataGrid is provided for binary compatibility with .NET Framework and is not intended to be used directly from your code. Use DataGridView instead.
Specifica l'aspetto, la formattazione del testo e il comportamento di una DataGrid colonna di controllo. Questa classe è astratta.
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
- Ereditarietà
- Derivato
- Attributi
- Implementazioni
Esempio
Nell'esempio di codice seguente viene creato un oggetto DataGridColumnStyle che ospita un DateTimePicker controllo .
#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
Commenti
L'insieme di DataGridColumnStyle oggetti (l'oggetto GridColumnStylesCollection) è accessibile tramite la System.Windows.Forms.DataGrid proprietà del TableStyles controllo.
Il System.Windows.Forms.DataGrid controllo crea automaticamente una raccolta di DataGridColumnStyle oggetti quando si imposta la DataSource proprietà su un'origine dati appropriata. Gli oggetti creati in realtà sono istanze di una delle classi seguenti che ereditano da DataGridColumnStyle: DataGridBoolColumn o DataGridTextBoxColumn classe .
Per formattare la visualizzazione dei dati, impostare la Format proprietà della DataGridTextBoxColumn classe su uno dei valori di formattazione. Per altre informazioni sui valori di formattazione validi, vedere Formattazione di tipi e stringhe di formato di data e ora personalizzate.
È anche possibile creare un set personalizzato di DataGridColumnStyle oggetti e aggiungerli all'oggetto GridColumnStylesCollection. In questo caso, è necessario impostare l'oggetto MappingName di ogni stile di colonna su ColumnName di un DataColumn per sincronizzare la visualizzazione delle colonne con i dati effettivi.
Attenzione
Creare DataGridColumnStyle sempre oggetti e aggiungerli a GridColumnStylesCollection prima di aggiungere DataGridTableStyle oggetti a GridTableStylesCollection. Quando si aggiunge un oggetto vuoto DataGridTableStyle con un valore valido MappingName all'insieme, DataGridColumnStyle gli oggetti vengono generati automaticamente. Di conseguenza, viene generata un'eccezione se si tenta di aggiungere nuovi DataGridColumnStyle oggetti con valori duplicati MappingName a GridColumnStylesCollection.
Quando una delle classi derivate viene creata un'istanza da un System.Windows.Forms.DataGrid controllo, la classe creata dipende dall'oggetto DataTypeDataColumn associato all'oggetto DataGridColumnStyle . Ad esempio, un oggetto DataColumn con il relativo DataType set su System.Boolean verrà associato a un oggetto DataGridBoolColumn. Per determinare il tipo di qualsiasi DataGridColumnStyle, usare il GetType metodo .
Per creare classi di colonne personalizzate, è possibile ereditare da DataGridColumnStyle. È possibile eseguire questa operazione per creare colonne speciali che ospitano i controlli, come illustrato dalla DataGridTextBox classe , che ospita il TextBox controllo . Ad esempio, è possibile ospitare un Image controllo per visualizzare le immagini nelle colonne oppure creare un controllo utente personalizzato da ospitare nella colonna.
La funzionalità di DataGridColumnStyle non deve essere confusa con quella di DataColumn. DataColumn Mentre contiene le proprietà e i metodi appropriati per la creazione dello schema di una tabella dati, DataGridColumnStyle contiene le proprietà e i metodi correlati all'aspetto di una singola colonna sullo schermo.
Se una riga contiene , DBNull.Valueil testo visualizzato nella colonna può essere impostato con la NullText proprietà .
La DataGridColumnStyle classe consente inoltre di specificare il comportamento di una colonna durante la modifica dei dati. I BeginUpdate metodi e EndUpdate sospendono temporaneamente il disegno della colonna mentre vengono eseguiti aggiornamenti di grandi dimensioni ai dati della colonna. Senza questa funzionalità, ogni modifica in ogni cella della griglia verrebbe immediatamente disegnata; questo potrebbe distrarre l'utente e una responsabilità in caso di prestazioni.
Diversi metodi consentono il monitoraggio della colonna mentre viene modificato dall'utente, inclusi gli Edit eventi e Commit .
La maggior parte delle proprietà e dei metodi della classe è personalizzata per controllare l'aspetto di una colonna. Alcuni, ad esempio GetColumnValueAtRow e SetColumnValueAtRow consentono di esaminare e modificare il valore in una cella specificata.
Note per gli implementatori
Quando si eredita da DataGridColumnStyle, è necessario eseguire l'override dei membri seguenti: Abort(Int32), Commit(CurrencyManager, Int32), Edit(CurrencyManager, Int32, Rectangle, Boolean)e Paint(Graphics, Rectangle, CurrencyManager, Int32) (due volte).
Costruttori
| Nome | Descrizione |
|---|---|
| DataGridColumnStyle() |
Obsoleti.
In una classe derivata inizializza una nuova istanza della DataGridColumnStyle classe . |
| DataGridColumnStyle(PropertyDescriptor) |
Obsoleti.
Inizializza una nuova istanza della DataGridColumnStyle classe con l'oggetto specificato PropertyDescriptor. |
Proprietà
| Nome | Descrizione |
|---|---|
| Alignment |
Obsoleti.
Ottiene o imposta l'allineamento del testo in una colonna. |
| CanRaiseEvents |
Obsoleti.
Ottiene un valore che indica se il componente può generare un evento. (Ereditato da Component) |
| Container |
Obsoleti.
Ottiene l'oggetto IContainer contenente l'oggetto Component. (Ereditato da Component) |
| DataGridTableStyle |
Obsoleti.
Ottiene l'oggetto DataGridTableStyle per la colonna. |
| DesignMode |
Obsoleti.
Ottiene un valore che indica se è Component attualmente in modalità progettazione. (Ereditato da Component) |
| Events |
Obsoleti.
Ottiene l'elenco dei gestori eventi associati a questo Componentoggetto . (Ereditato da Component) |
| FontHeight |
Obsoleti.
Ottiene l'altezza del tipo di carattere della colonna. |
| HeaderAccessibleObject |
Obsoleti.
Ottiene l'oggetto AccessibleObject per la colonna. |
| HeaderText |
Obsoleti.
Ottiene o imposta il testo dell'intestazione di colonna. |
| MappingName |
Obsoleti.
Ottiene o imposta il nome del membro dati in cui eseguire il mapping dello stile della colonna. |
| NullText |
Obsoleti.
Ottiene o imposta il testo visualizzato quando la colonna contiene |
| PropertyDescriptor |
Obsoleti.
Ottiene o imposta l'oggetto PropertyDescriptor che determina gli attributi dei dati visualizzati da DataGridColumnStyle. |
| ReadOnly |
Obsoleti.
Ottiene o imposta un valore che indica se i dati nella colonna possono essere modificati. |
| Site |
Obsoleti.
Ottiene o imposta l'oggetto ISite dell'oggetto Component. (Ereditato da Component) |
| Width |
Obsoleti.
Ottiene o imposta la larghezza della colonna. |
Metodi
| Nome | Descrizione |
|---|---|
| Abort(Int32) |
Obsoleti.
Quando sottoposto a override in una classe derivata, avvia una richiesta per interrompere una procedura di modifica. |
| BeginUpdate() |
Obsoleti.
Sospende il disegno della colonna fino a quando non viene chiamato il EndUpdate() metodo . |
| CheckValidDataSource(CurrencyManager) |
Obsoleti.
Genera un'eccezione se l'oggetto non dispone di un'origine DataGrid dati valida o se questa colonna non è mappata a una proprietà valida nell'origine dati. |
| ColumnStartedEditing(Control) |
Obsoleti.
Informa che DataGrid l'utente ha iniziato a modificare la colonna. |
| Commit(CurrencyManager, Int32) |
Obsoleti.
Quando sottoposto a override in una classe derivata, avvia una richiesta per completare una procedura di modifica. |
| ConcedeFocus() |
Obsoleti.
Notifica a una colonna che deve rinunciare allo stato attivo per il controllo che ospita. |
| CreateHeaderAccessibleObject() |
Obsoleti.
Ottiene l'oggetto AccessibleObject per la colonna. |
| CreateObjRef(Type) |
Obsoleti.
Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto. (Ereditato da MarshalByRefObject) |
| Dispose() |
Obsoleti.
Rilascia tutte le risorse usate da Component. (Ereditato da Component) |
| Dispose(Boolean) |
Obsoleti.
Rilascia le risorse non gestite usate da Component e, facoltativamente, rilascia le risorse gestite. (Ereditato da Component) |
| Edit(CurrencyManager, Int32, Rectangle, Boolean, String, Boolean) |
Obsoleti.
Quando sottoposto a override in una classe di derivazione, prepara una cella per la modifica. |
| Edit(CurrencyManager, Int32, Rectangle, Boolean, String) |
Obsoleti.
Prepara la cella per la modifica usando i parametri , il numero di riga e Rectangle i parametri specificatiCurrencyManager. |
| Edit(CurrencyManager, Int32, Rectangle, Boolean) |
Obsoleti.
Prepara una cella per la modifica. |
| EndUpdate() |
Obsoleti.
Riprende il disegno delle colonne sospese chiamando il BeginUpdate() metodo . |
| EnterNullValue() |
Obsoleti.
Inserisce un oggetto Value nella colonna . |
| Equals(Object) |
Obsoleti.
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetColumnValueAtRow(CurrencyManager, Int32) |
Obsoleti.
Ottiene il valore nella riga specificata dall'oggetto specificato CurrencyManager. |
| GetHashCode() |
Obsoleti.
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetLifetimeService() |
Obsoleti.
Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| GetMinimumHeight() |
Obsoleti.
Quando sottoposto a override in una classe derivata, ottiene l'altezza minima di una riga. |
| GetPreferredHeight(Graphics, Object) |
Obsoleti.
In caso di override in una classe derivata, ottiene l'altezza utilizzata per il ridimensionamento automatico delle colonne. |
| GetPreferredSize(Graphics, Object) |
Obsoleti.
In caso di override in una classe derivata, ottiene la larghezza e l'altezza del valore specificato. La larghezza e l'altezza vengono usate quando l'utente passa all'uso DataGridTableStyle di DataGridColumnStyle. |
| GetService(Type) |
Obsoleti.
Restituisce un oggetto che rappresenta un servizio fornito da Component o da Container. (Ereditato da Component) |
| GetType() |
Obsoleti.
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| InitializeLifetimeService() |
Obsoleti.
Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| Invalidate() |
Obsoleti.
Ridisegna la colonna e fa sì che un messaggio di disegno venga inviato al controllo. |
| MemberwiseClone() |
Obsoleti.
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| MemberwiseClone(Boolean) |
Obsoleti.
Crea una copia superficiale dell'oggetto corrente MarshalByRefObject . (Ereditato da MarshalByRefObject) |
| Paint(Graphics, Rectangle, CurrencyManager, Int32, Boolean) |
Obsoleti.
In caso di override in una classe derivata, disegna un DataGridColumnStyle oggetto con il numero di riga , RectangleCurrencyManager, e l'allineamento specificatiGraphics. |
| Paint(Graphics, Rectangle, CurrencyManager, Int32, Brush, Brush, Boolean) |
Obsoleti.
Disegna un DataGridColumnStyle oggetto con il numero di riga , Rectangle, CurrencyManager, , il colore di sfondo, il colore di primo piano e l'allineamento specificatiGraphics. |
| Paint(Graphics, Rectangle, CurrencyManager, Int32) |
Obsoleti.
Disegna l'oggetto DataGridColumnStyle con il numero di riga , RectangleCurrencyManager, e specificatoGraphics. |
| ReleaseHostedControl() |
Obsoleti.
Consente alla colonna di liberare risorse quando il controllo che ospita non è necessario. |
| ResetHeaderText() |
Obsoleti.
Reimposta l'oggetto sul HeaderText relativo valore predefinito, |
| SetColumnValueAtRow(CurrencyManager, Int32, Object) |
Obsoleti.
Imposta il valore in una riga specificata con il valore di un oggetto specificato CurrencyManager. |
| SetDataGrid(DataGrid) |
Obsoleti.
Imposta il DataGrid controllo a cui appartiene questa colonna. |
| SetDataGridInColumn(DataGrid) |
Obsoleti.
Imposta l'oggetto DataGrid per la colonna. |
| ToString() |
Obsoleti.
Restituisce un oggetto String contenente il nome dell'oggetto Component, se presente. Questo metodo non deve essere sottoposto a override. (Ereditato da Component) |
| UpdateUI(CurrencyManager, Int32, String) |
Obsoleti.
Aggiorna il valore di una riga specificata con il testo specificato. |
Eventi
| Nome | Descrizione |
|---|---|
| AlignmentChanged |
Obsoleti.
Si verifica quando il valore della Alignment proprietà cambia. |
| Disposed |
Obsoleti.
Si verifica quando il componente viene eliminato da una chiamata al Dispose() metodo . (Ereditato da Component) |
| FontChanged |
Obsoleti.
Si verifica quando cambia il tipo di carattere della colonna. |
| HeaderTextChanged |
Obsoleti.
Si verifica quando il valore della HeaderText proprietà cambia. |
| MappingNameChanged |
Obsoleti.
Si verifica quando il MappingName valore cambia. |
| NullTextChanged |
Obsoleti.
Si verifica quando il NullText valore cambia. |
| PropertyDescriptorChanged |
Obsoleti.
Si verifica quando il valore della PropertyDescriptor proprietà cambia. |
| ReadOnlyChanged |
Obsoleti.
Si verifica quando il valore della ReadOnly proprietà cambia. |
| WidthChanged |
Obsoleti.
Si verifica quando il valore della Width proprietà cambia. |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IDataGridColumnStyleEditingNotificationService.ColumnStartedEditing(Control) |
Obsoleti.
Informa il DataGrid controllo che l'utente ha iniziato a modificare la colonna. |