DataGridViewColumn 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.
Rappresenta una colonna in un controllo DataGridView.
public ref class DataGridViewColumn : System::Windows::Forms::DataGridViewBand, IDisposable, System::ComponentModel::IComponent
[System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.DataGridViewColumnConverter))]
public class DataGridViewColumn : System.Windows.Forms.DataGridViewBand, IDisposable, System.ComponentModel.IComponent
[<System.ComponentModel.TypeConverter(typeof(System.Windows.Forms.DataGridViewColumnConverter))>]
type DataGridViewColumn = class
inherit DataGridViewBand
interface IComponent
interface IDisposable
Public Class DataGridViewColumn
Inherits DataGridViewBand
Implements IComponent, IDisposable
- Ereditarietà
- Derivato
- Attributi
- Implementazioni
Esempio
Nell'esempio di codice seguente viene creato un Windows Form con un DataGridView oggetto e un set di pulsanti. Ogni etichetta del pulsante descrive un'operazione correlata a una DataGridViewColumn proprietà, ad esempio lo scambio della prima e dell'ultima colonna (utilizzando la proprietà ) o la DisplayIndex modifica del testo di un'intestazione di colonna (utilizzando la HeaderText proprietà ). Facendo clic su un pulsante viene modificata la proprietà associata dell'oggetto DataGridViewColumn.
#using <System.Drawing.dll>
#using <System.dll>
#using <system.windows.forms.dll>
using namespace System;
using namespace System::Windows::Forms;
using namespace System::Drawing;
using namespace System::Collections;
public ref class DataGridViewColumnDemo: public Form
{
private:
#pragma region S "set up form"
public:
DataGridViewColumnDemo()
{
Button1 = gcnew Button;
Button2 = gcnew Button;
Button3 = gcnew Button;
Button4 = gcnew Button;
Button5 = gcnew Button;
Button6 = gcnew Button;
Button7 = gcnew Button;
Button8 = gcnew Button;
Button9 = gcnew Button;
Button10 = gcnew Button;
FlowLayoutPanel1 = gcnew FlowLayoutPanel;
thirdColumnHeader = L"Main Ingredients";
boringMeatloaf = L"ground beef";
boringMeatloafRanking = L"*";
toolStripItem1 = gcnew ToolStripMenuItem;
InitializeComponent();
AddButton( Button1, L"Reset", gcnew EventHandler( this, &DataGridViewColumnDemo::ResetToDisorder ) );
AddButton( Button2, L"Change Column 3 Header", gcnew EventHandler( this, &DataGridViewColumnDemo::ChangeColumn3Header ) );
AddButton( Button3, L"Change Meatloaf Recipe", gcnew EventHandler( this, &DataGridViewColumnDemo::ChangeMeatloafRecipe ) );
AddAdditionalButtons();
InitializeDataGridView();
}
DataGridView^ dataGridView;
Button^ Button1;
Button^ Button2;
Button^ Button3;
Button^ Button4;
Button^ Button5;
Button^ Button6;
Button^ Button7;
Button^ Button8;
Button^ Button9;
Button^ Button10;
FlowLayoutPanel^ FlowLayoutPanel1;
private:
void InitializeComponent()
{
FlowLayoutPanel1->Location = Point(454,0);
FlowLayoutPanel1->AutoSize = true;
FlowLayoutPanel1->FlowDirection = FlowDirection::TopDown;
AutoSize = true;
ClientSize = System::Drawing::Size( 614, 360 );
FlowLayoutPanel1->Name = L"flowlayoutpanel";
Controls->Add( this->FlowLayoutPanel1 );
Text = this->GetType()->Name;
}
#pragma endregion
#pragma region S " set up DataGridView "
String^ thirdColumnHeader;
String^ boringMeatloaf;
String^ boringMeatloafRanking;
bool boringRecipe;
bool shortMode;
void InitializeDataGridView()
{
dataGridView = gcnew System::Windows::Forms::DataGridView;
Controls->Add( dataGridView );
dataGridView->Size = System::Drawing::Size( 300, 200 );
// Create an unbound DataGridView by declaring a
// column count.
dataGridView->ColumnCount = 4;
AdjustDataGridViewSizing();
// Set the column header style.
DataGridViewCellStyle^ columnHeaderStyle = gcnew DataGridViewCellStyle;
columnHeaderStyle->BackColor = Color::Aqua;
columnHeaderStyle->Font = gcnew System::Drawing::Font( L"Verdana",10,FontStyle::Bold );
dataGridView->ColumnHeadersDefaultCellStyle = columnHeaderStyle;
// Set the column header names.
dataGridView->Columns[ 0 ]->Name = L"Recipe";
dataGridView->Columns[ 1 ]->Name = L"Category";
dataGridView->Columns[ 2 ]->Name = thirdColumnHeader;
dataGridView->Columns[ 3 ]->Name = L"Rating";
criteriaLabel = L"Column 3 sizing criteria: ";
PostColumnCreation();
// Populate the rows.
array<String^>^row1 = gcnew array<String^>{
L"Meatloaf",L"Main Dish",boringMeatloaf,boringMeatloafRanking
};
array<String^>^row2 = gcnew array<String^>{
L"Key Lime Pie",L"Dessert",L"lime juice, evaporated milk",L"****"
};
array<String^>^row3 = gcnew array<String^>{
L"Orange-Salsa Pork Chops",L"Main Dish",L"pork chops, salsa, orange juice",L"****"
};
array<String^>^row4 = gcnew array<String^>{
L"Black Bean and Rice Salad",L"Salad",L"black beans, brown rice",L"****"
};
array<String^>^row5 = gcnew array<String^>{
L"Chocolate Cheesecake",L"Dessert",L"cream cheese",L"***"
};
array<String^>^row6 = gcnew array<String^>{
L"Black Bean Dip",L"Appetizer",L"black beans, sour cream",L"***"
};
array<Object^>^rows = gcnew array<Object^>{
row1,row2,row3,row4,row5,row6
};
System::Collections::IEnumerator^ myEnum = rows->GetEnumerator();
while ( myEnum->MoveNext() )
{
array<String^>^rowArray = safe_cast<array<String^>^>(myEnum->Current);
dataGridView->Rows->Add( rowArray );
}
shortMode = false;
boringRecipe = true;
}
void AddButton( Button^ button, String^ buttonLabel, EventHandler^ handler )
{
FlowLayoutPanel1->Controls->Add( button );
button->TabIndex = FlowLayoutPanel1->Controls->Count;
button->Text = buttonLabel;
button->AutoSize = true;
button->Click += handler;
}
void ResetToDisorder( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
Controls->Remove( dataGridView );
dataGridView->~DataGridView();
InitializeDataGridView();
}
void ChangeColumn3Header( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
Toggle( &shortMode );
if ( shortMode )
{
dataGridView->Columns[ 2 ]->HeaderText = L"S";
}
else
{
dataGridView->Columns[ 2 ]->HeaderText = thirdColumnHeader;
}
}
void Toggle( interior_ptr<Boolean> toggleThis )
{
*toggleThis = ! *toggleThis;
}
void ChangeMeatloafRecipe( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
Toggle( &boringRecipe );
if ( boringRecipe )
{
SetMeatloaf( boringMeatloaf, boringMeatloafRanking );
}
else
{
String^ greatMeatloafRecipe = L"1 lb. lean ground beef, "
L"1/2 cup bread crumbs, 1/4 cup ketchup,"
L"1/3 tsp onion powder, "
L"1 clove of garlic, 1/2 pack onion soup mix "
L" dash of your favorite BBQ Sauce";
SetMeatloaf( greatMeatloafRecipe, L"***" );
}
}
void SetMeatloaf( String^ recipe, String^ rating )
{
dataGridView->Rows[ 0 ]->Cells[ 2 ]->Value = recipe;
dataGridView->Rows[ 0 ]->Cells[ 3 ]->Value = rating;
}
#pragma endregion
public:
static void Main()
{
Application::Run( gcnew DataGridViewColumnDemo );
}
#pragma region S " demonstration code "
private:
void PostColumnCreation()
{
AddContextLabel();
AddCriteriaLabel();
CustomizeCellsInThirdColumn();
AddContextMenu();
SetDefaultCellInFirstColumn();
ToolTips();
dataGridView->CellMouseEnter += gcnew DataGridViewCellEventHandler( this, &DataGridViewColumnDemo::dataGridView_CellMouseEnter );
dataGridView->AutoSizeColumnModeChanged += gcnew DataGridViewAutoSizeColumnModeEventHandler( this, &DataGridViewColumnDemo::dataGridView_AutoSizeColumnModeChanged );
}
String^ criteriaLabel;
void AddCriteriaLabel()
{
AddLabelToPanelIfNotAlreadyThere( criteriaLabel, String::Concat( criteriaLabel, dataGridView->Columns[ 2 ]->AutoSizeMode, L"." ) );
}
void AddContextLabel()
{
String^ labelName = L"label";
AddLabelToPanelIfNotAlreadyThere( labelName, L"Use shortcut menu to change cell color." );
}
void AddLabelToPanelIfNotAlreadyThere( String^ labelName, String^ labelText )
{
Label^ label;
if ( FlowLayoutPanel1->Controls[ labelName ] == nullptr )
{
label = gcnew Label;
label->AutoSize = true;
label->Name = labelName;
label->BackColor = Color::Bisque;
FlowLayoutPanel1->Controls->Add( label );
}
else
{
label = dynamic_cast<Label^>(FlowLayoutPanel1->Controls[ labelName ]);
}
label->Text = labelText;
}
void CustomizeCellsInThirdColumn()
{
int thirdColumn = 2;
DataGridViewColumn^ column = dataGridView->Columns[ thirdColumn ];
DataGridViewCell^ cell = gcnew DataGridViewTextBoxCell;
cell->Style->BackColor = Color::Wheat;
column->CellTemplate = cell;
}
ToolStripMenuItem^ toolStripItem1;
void AddContextMenu()
{
toolStripItem1->Text = L"Redden";
toolStripItem1->Click += gcnew EventHandler( this, &DataGridViewColumnDemo::toolStripItem1_Click );
System::Windows::Forms::ContextMenuStrip^ strip = gcnew System::Windows::Forms::ContextMenuStrip;
IEnumerator^ myEnum = dataGridView->Columns->GetEnumerator();
while ( myEnum->MoveNext() )
{
DataGridViewColumn^ column = safe_cast<DataGridViewColumn^>(myEnum->Current);
column->ContextMenuStrip = strip;
column->ContextMenuStrip->Items->Add( toolStripItem1 );
}
}
DataGridViewCellEventArgs^ mouseLocation;
// Change the cell's color.
void toolStripItem1_Click( Object^ /*sender*/, EventArgs^ /*args*/ )
{
dataGridView->Rows[ mouseLocation->RowIndex ]->Cells[ mouseLocation->ColumnIndex ]->Style->BackColor = Color::Red;
}
// Deal with hovering over a cell.
void dataGridView_CellMouseEnter( Object^ /*sender*/, DataGridViewCellEventArgs^ location )
{
mouseLocation = location;
}
void SetDefaultCellInFirstColumn()
{
DataGridViewColumn^ firstColumn = dataGridView->Columns[ 0 ];
DataGridViewCellStyle^ cellStyle = gcnew DataGridViewCellStyle;
cellStyle->BackColor = Color::Thistle;
firstColumn->DefaultCellStyle = cellStyle;
}
void ToolTips()
{
DataGridViewColumn^ firstColumn = dataGridView->Columns[ 0 ];
DataGridViewColumn^ thirdColumn = dataGridView->Columns[ 2 ];
firstColumn->ToolTipText = L"This column uses a default cell.";
thirdColumn->ToolTipText = L"This column uses a template cell."
L" Style changes to one cell apply to all cells.";
}
void AddAdditionalButtons()
{
AddButton( Button4, L"Set Minimum Width of Column Two", gcnew EventHandler( this, &DataGridViewColumnDemo::Button4_Click ) );
AddButton( Button5, L"Set Width of Column One", gcnew EventHandler( this, &DataGridViewColumnDemo::Button5_Click ) );
AddButton( Button6, L"Autosize Third Column", gcnew EventHandler( this, &DataGridViewColumnDemo::Button6_Click ) );
AddButton( Button7, L"Add Thick Vertical Edge", gcnew EventHandler( this, &DataGridViewColumnDemo::Button7_Click ) );
AddButton( Button8, L"Style and Number Columns", gcnew EventHandler( this, &DataGridViewColumnDemo::Button8_Click ) );
AddButton( Button9, L"Change Column Header Text", gcnew EventHandler( this, &DataGridViewColumnDemo::Button9_Click ) );
AddButton( Button10, L"Swap First and Last Columns", gcnew EventHandler( this, &DataGridViewColumnDemo::Button10_Click ) );
}
void AdjustDataGridViewSizing()
{
dataGridView->ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode::AutoSize;
}
//Set the minimum width.
void Button4_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
DataGridViewColumn^ column = dataGridView->Columns[ 1 ];
column->MinimumWidth = 40;
}
// Set the width.
void Button5_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
DataGridViewColumn^ column = dataGridView->Columns[ 0 ];
column->Width = 60;
}
// AutoSize the third column.
void Button6_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
DataGridViewColumn^ column = dataGridView->Columns[ 2 ];
column->AutoSizeMode = DataGridViewAutoSizeColumnMode::DisplayedCells;
}
// Set the vertical edge.
void Button7_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
int thirdColumn = 2;
// int edgeThickness = 5;
DataGridViewColumn^ column = dataGridView->Columns[ thirdColumn ];
column->DividerWidth = 10;
}
// Style and number columns.
void Button8_Click( Object^ /*sender*/, EventArgs^ /*args*/ )
{
DataGridViewCellStyle^ style = gcnew DataGridViewCellStyle;
style->Alignment = DataGridViewContentAlignment::MiddleCenter;
style->ForeColor = Color::IndianRed;
style->BackColor = Color::Ivory;
IEnumerator^ myEnum1 = dataGridView->Columns->GetEnumerator();
while ( myEnum1->MoveNext() )
{
DataGridViewColumn^ column = safe_cast<DataGridViewColumn^>(myEnum1->Current);
column->HeaderCell->Value = column->Index.ToString();
column->HeaderCell->Style = style;
}
}
// Change the text in the column header.
void Button9_Click( Object^ /*sender*/, EventArgs^ /*args*/ )
{
IEnumerator^ myEnum2 = dataGridView->Columns->GetEnumerator();
while ( myEnum2->MoveNext() )
{
DataGridViewColumn^ column = safe_cast<DataGridViewColumn^>(myEnum2->Current);
column->HeaderText = String::Concat( L"Column ", column->Index.ToString() );
}
}
// Swap the last column with the first.
void Button10_Click( Object^ /*sender*/, EventArgs^ /*args*/ )
{
DataGridViewColumnCollection^ columnCollection = dataGridView->Columns;
DataGridViewColumn^ firstDisplayedColumn = columnCollection->GetFirstColumn( DataGridViewElementStates::Visible );
DataGridViewColumn^ lastDisplayedColumn = columnCollection->GetLastColumn( DataGridViewElementStates::Visible, DataGridViewElementStates::None );
int firstColumn_sIndex = firstDisplayedColumn->DisplayIndex;
firstDisplayedColumn->DisplayIndex = lastDisplayedColumn->DisplayIndex;
lastDisplayedColumn->DisplayIndex = firstColumn_sIndex;
}
// Updated the criteria label.
void dataGridView_AutoSizeColumnModeChanged( Object^ /*sender*/, DataGridViewAutoSizeColumnModeEventArgs^ args )
{
args->Column->DataGridView->Parent->Controls[ L"flowlayoutpanel" ]->Controls[ criteriaLabel ]->Text = String::Concat( criteriaLabel, args->Column->AutoSizeMode );
}
#pragma endregion
};
int main()
{
DataGridViewColumnDemo::Main();
}
using System.Windows.Forms;
using System;
using System.Drawing;
public class DataGridViewColumnDemo : Form
{
#region "set up form"
public DataGridViewColumnDemo()
{
InitializeComponent();
AddButton(Button1, "Reset",
new EventHandler(ResetToDisorder));
AddButton(Button2, "Change Column 3 Header",
new EventHandler(ChangeColumn3Header));
AddButton(Button3, "Change Meatloaf Recipe",
new EventHandler(ChangeMeatloafRecipe));
AddAdditionalButtons();
InitializeDataGridView();
}
DataGridView dataGridView;
Button Button1 = new Button();
Button Button2 = new Button();
Button Button3 = new Button();
Button Button4 = new Button();
Button Button5 = new Button();
Button Button6 = new Button();
Button Button7 = new Button();
Button Button8 = new Button();
Button Button9 = new Button();
Button Button10 = new Button();
FlowLayoutPanel FlowLayoutPanel1 = new FlowLayoutPanel();
private void InitializeComponent()
{
FlowLayoutPanel1.Location = new Point(454, 0);
FlowLayoutPanel1.AutoSize = true;
FlowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
FlowLayoutPanel1.Name = "flowlayoutpanel";
ClientSize = new System.Drawing.Size(614, 360);
Controls.Add(this.FlowLayoutPanel1);
Text = this.GetType().Name;
AutoSize = true;
}
#endregion
#region "set up DataGridView"
private string thirdColumnHeader = "Main Ingredients";
private string boringMeatloaf = "ground beef";
private string boringMeatloafRanking = "*";
private bool boringRecipe;
private bool shortMode;
private void InitializeDataGridView()
{
dataGridView = new System.Windows.Forms.DataGridView();
Controls.Add(dataGridView);
dataGridView.Size = new Size(300, 200);
// Create an unbound DataGridView by declaring a
// column count.
dataGridView.ColumnCount = 4;
AdjustDataGridViewSizing();
// Set the column header style.
DataGridViewCellStyle columnHeaderStyle =
new DataGridViewCellStyle();
columnHeaderStyle.BackColor = Color.Aqua;
columnHeaderStyle.Font =
new Font("Verdana", 10, FontStyle.Bold);
dataGridView.ColumnHeadersDefaultCellStyle =
columnHeaderStyle;
// Set the column header names.
dataGridView.Columns[0].Name = "Recipe";
dataGridView.Columns[1].Name = "Category";
dataGridView.Columns[2].Name = thirdColumnHeader;
dataGridView.Columns[3].Name = "Rating";
PostColumnCreation();
// Populate the rows.
string[] row1 = new string[]{"Meatloaf",
"Main Dish", boringMeatloaf, boringMeatloafRanking};
string[] row2 = new string[]{"Key Lime Pie",
"Dessert", "lime juice, evaporated milk", "****"};
string[] row3 = new string[]{"Orange-Salsa Pork Chops",
"Main Dish", "pork chops, salsa, orange juice", "****"};
string[] row4 = new string[]{"Black Bean and Rice Salad",
"Salad", "black beans, brown rice", "****"};
string[] row5 = new string[]{"Chocolate Cheesecake",
"Dessert", "cream cheese", "***"};
string[] row6 = new string[]{"Black Bean Dip", "Appetizer",
"black beans, sour cream", "***"};
object[] rows = new object[] { row1, row2, row3, row4, row5, row6 };
foreach (string[] rowArray in rows)
{
dataGridView.Rows.Add(rowArray);
}
shortMode = false;
boringRecipe = true;
}
private void AddButton(Button button, string buttonLabel,
EventHandler handler)
{
FlowLayoutPanel1.Controls.Add(button);
button.TabIndex = FlowLayoutPanel1.Controls.Count;
button.Text = buttonLabel;
button.AutoSize = true;
button.Click += handler;
}
private void ResetToDisorder(object sender, System.EventArgs e)
{
Controls.Remove(dataGridView);
dataGridView.Dispose();
InitializeDataGridView();
}
private void ChangeColumn3Header(object sender,
System.EventArgs e)
{
Toggle(ref shortMode);
if (shortMode)
{ dataGridView.Columns[2].HeaderText = "S"; }
else
{ dataGridView.Columns[2].HeaderText = thirdColumnHeader; }
}
private static void Toggle(ref bool toggleThis)
{
toggleThis = !toggleThis;
}
private void ChangeMeatloafRecipe(object sender,
System.EventArgs e)
{
Toggle(ref boringRecipe);
if (boringRecipe)
{
SetMeatloaf(boringMeatloaf, boringMeatloafRanking);
}
else
{
string greatMeatloafRecipe =
"1 lb. lean ground beef, " +
"1/2 cup bread crumbs, 1/4 cup ketchup," +
"1/3 tsp onion powder, " +
"1 clove of garlic, 1/2 pack onion soup mix " +
" dash of your favorite BBQ Sauce";
SetMeatloaf(greatMeatloafRecipe, "***");
}
}
private void SetMeatloaf(string recipe, string rating)
{
dataGridView.Rows[0].Cells[2].Value = recipe;
dataGridView.Rows[0].Cells[3].Value = rating;
}
#endregion
#region "demonstration code"
private void PostColumnCreation()
{
AddContextLabel();
AddCriteriaLabel();
CustomizeCellsInThirdColumn();
AddContextMenu();
SetDefaultCellInFirstColumn();
ToolTips();
dataGridView.CellMouseEnter +=
dataGridView_CellMouseEnter;
dataGridView.AutoSizeColumnModeChanged +=
dataGridView_AutoSizeColumnModeChanged;
}
private string criteriaLabel = "Column 3 sizing criteria: ";
private void AddCriteriaLabel()
{
AddLabelToPanelIfNotAlreadyThere(criteriaLabel,
criteriaLabel +
dataGridView.Columns[2].AutoSizeMode.ToString() +
".");
}
private void AddContextLabel()
{
string labelName = "label";
AddLabelToPanelIfNotAlreadyThere(labelName,
"Use shortcut menu to change cell color.");
}
private void AddLabelToPanelIfNotAlreadyThere(
string labelName, string labelText)
{
Label label;
if (FlowLayoutPanel1.Controls[labelName] == null)
{
label = new Label();
label.AutoSize = true;
label.Name = labelName;
label.BackColor = Color.Bisque;
FlowLayoutPanel1.Controls.Add(label);
}
else
{
label = (Label)FlowLayoutPanel1.Controls[labelName];
}
label.Text = labelText;
}
private void CustomizeCellsInThirdColumn()
{
int thirdColumn = 2;
DataGridViewColumn column =
dataGridView.Columns[thirdColumn];
DataGridViewCell cell = new DataGridViewTextBoxCell();
cell.Style.BackColor = Color.Wheat;
column.CellTemplate = cell;
}
ToolStripMenuItem toolStripItem1 = new ToolStripMenuItem();
private void AddContextMenu()
{
toolStripItem1.Text = "Redden";
toolStripItem1.Click += new EventHandler(toolStripItem1_Click);
ContextMenuStrip strip = new ContextMenuStrip();
foreach (DataGridViewColumn column in dataGridView.Columns)
{
column.ContextMenuStrip = strip;
column.ContextMenuStrip.Items.Add(toolStripItem1);
}
}
private DataGridViewCellEventArgs mouseLocation;
// Change the cell's color.
private void toolStripItem1_Click(object sender, EventArgs args)
{
dataGridView.Rows[mouseLocation.RowIndex]
.Cells[mouseLocation.ColumnIndex].Style.BackColor
= Color.Red;
}
// Deal with hovering over a cell.
private void dataGridView_CellMouseEnter(object sender,
DataGridViewCellEventArgs location)
{
mouseLocation = location;
}
private void SetDefaultCellInFirstColumn()
{
DataGridViewColumn firstColumn = dataGridView.Columns[0];
DataGridViewCellStyle cellStyle =
new DataGridViewCellStyle();
cellStyle.BackColor = Color.Thistle;
firstColumn.DefaultCellStyle = cellStyle;
}
private void ToolTips()
{
DataGridViewColumn firstColumn = dataGridView.Columns[0];
DataGridViewColumn thirdColumn = dataGridView.Columns[2];
firstColumn.ToolTipText =
"This column uses a default cell.";
thirdColumn.ToolTipText =
"This column uses a template cell." +
" Style changes to one cell apply to all cells.";
}
private void AddAdditionalButtons()
{
AddButton(Button4, "Set Minimum Width of Column Two",
new EventHandler(Button4_Click));
AddButton(Button5, "Set Width of Column One",
new EventHandler(Button5_Click));
AddButton(Button6, "Autosize Third Column",
new EventHandler(Button6_Click));
AddButton(Button7, "Add Thick Vertical Edge",
new EventHandler(Button7_Click));
AddButton(Button8, "Style and Number Columns",
new EventHandler(Button8_Click));
AddButton(Button9, "Change Column Header Text",
new EventHandler(Button9_Click));
AddButton(Button10, "Swap First and Last Columns",
new EventHandler(Button10_Click));
}
private void AdjustDataGridViewSizing()
{
dataGridView.ColumnHeadersHeightSizeMode =
DataGridViewColumnHeadersHeightSizeMode.AutoSize;
}
//Set the minimum width.
private void Button4_Click(object sender,
System.EventArgs e)
{
DataGridViewColumn column = dataGridView.Columns[1];
column.MinimumWidth = 40;
}
// Set the width.
private void Button5_Click(object sender, System.EventArgs e)
{
DataGridViewColumn column = dataGridView.Columns[0];
column.Width = 60;
}
// AutoSize the third column.
private void Button6_Click(object sender,
System.EventArgs e)
{
DataGridViewColumn column = dataGridView.Columns[2];
column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
}
// Set the vertical edge.
private void Button7_Click(object sender,
System.EventArgs e)
{
int thirdColumn = 2;
DataGridViewColumn column =
dataGridView.Columns[thirdColumn];
column.DividerWidth = 10;
}
// Style and number columns.
private void Button8_Click(object sender,
EventArgs args)
{
DataGridViewCellStyle style = new DataGridViewCellStyle();
style.Alignment =
DataGridViewContentAlignment.MiddleCenter;
style.ForeColor = Color.IndianRed;
style.BackColor = Color.Ivory;
foreach (DataGridViewColumn column in dataGridView.Columns)
{
column.HeaderCell.Value = column.Index.ToString();
column.HeaderCell.Style = style;
}
}
// Change the text in the column header.
private void Button9_Click(object sender,
EventArgs args)
{
foreach (DataGridViewColumn column in dataGridView.Columns)
{
column.HeaderText = String.Concat("Column ",
column.Index.ToString());
}
}
// Swap the last column with the first.
private void Button10_Click(object sender, EventArgs args)
{
DataGridViewColumnCollection columnCollection = dataGridView.Columns;
DataGridViewColumn firstVisibleColumn =
columnCollection.GetFirstColumn(DataGridViewElementStates.Visible);
DataGridViewColumn lastVisibleColumn =
columnCollection.GetLastColumn(
DataGridViewElementStates.Visible, DataGridViewElementStates.None);
int firstColumn_sIndex = firstVisibleColumn.DisplayIndex;
firstVisibleColumn.DisplayIndex = lastVisibleColumn.DisplayIndex;
lastVisibleColumn.DisplayIndex = firstColumn_sIndex;
}
// Updated the criteria label.
private void dataGridView_AutoSizeColumnModeChanged(object sender,
DataGridViewAutoSizeColumnModeEventArgs args)
{
args.Column.DataGridView.Parent.
Controls["flowlayoutpanel"].Controls[criteriaLabel].
Text = criteriaLabel
+ args.Column.AutoSizeMode.ToString();
}
#endregion
[STAThreadAttribute()]
public static void Main()
{
Application.Run(new DataGridViewColumnDemo());
}
}
Imports System.Windows.Forms
Imports System.Drawing
Public Class DataGridViewColumnDemo
Inherits Form
#Region "set up form"
Public Sub New()
InitializeComponent()
AddButton(Button1, "Reset")
AddButton(Button2, "Change Column 3 Header")
AddButton(Button3, "Change Meatloaf Recipe")
AddAdditionalButtons()
End Sub
Friend WithEvents dataGridView As DataGridView
Friend WithEvents Button1 As Button = New Button()
Friend WithEvents Button2 As Button = New Button()
Friend WithEvents Button3 As Button = New Button()
Friend WithEvents Button4 As Button = New Button()
Friend WithEvents Button5 As Button = New Button()
Friend WithEvents Button6 As Button = New Button()
Friend WithEvents Button7 As Button = New Button()
Friend WithEvents Button8 As Button = New Button()
Friend WithEvents Button9 As Button = New Button()
Friend WithEvents Button10 As Button = New Button()
Friend WithEvents FlowLayoutPanel1 As FlowLayoutPanel _
= New FlowLayoutPanel()
Private Sub InitializeComponent()
FlowLayoutPanel1.Location = New Point(454, 0)
FlowLayoutPanel1.AutoSize = True
FlowLayoutPanel1.FlowDirection = FlowDirection.TopDown
FlowLayoutPanel1.Name = "flowlayoutpanel"
ClientSize = New System.Drawing.Size(614, 360)
Controls.Add(FlowLayoutPanel1)
Text = Me.GetType.Name
AutoSize = True
End Sub
#End Region
#Region "set up DataGridView"
Private thirdColumnHeader As String = "Main Ingredients"
Private boringMeatloaf As String = "ground beef"
Private boringMeatloafRanking As String = "*"
Private boringRecipe As Boolean
Private shortMode As Boolean
Private Sub InitializeDataGridView(ByVal ignored As Object, _
ByVal ignoredToo As EventArgs) Handles Me.Load
dataGridView = New System.Windows.Forms.DataGridView
Controls.Add(dataGridView)
dataGridView.Size = New Size(300, 200)
' Create an unbound DataGridView by declaring a
' column count.
dataGridView.ColumnCount = 4
AdjustDataGridViewSizing()
' Set the column header style.
Dim columnHeaderStyle As New DataGridViewCellStyle
columnHeaderStyle.BackColor = Color.Aqua
columnHeaderStyle.Font = _
New Font("Verdana", 10, FontStyle.Bold)
dataGridView.ColumnHeadersDefaultCellStyle = _
columnHeaderStyle
' Set the column header names.
dataGridView.Columns(0).Name = "Recipe"
dataGridView.Columns(1).Name = "Category"
dataGridView.Columns(2).Name = thirdColumnHeader
dataGridView.Columns(3).Name = "Rating"
PostColumnCreation()
' Populate the rows.
Dim row1 As String() = New String() _
{"Meatloaf", "Main Dish", boringMeatloaf, _
boringMeatloafRanking}
Dim row2 As String() = New String() _
{"Key Lime Pie", "Dessert", _
"lime juice, evaporated milk", _
"****"}
Dim row3 As String() = New String() _
{"Orange-Salsa Pork Chops", "Main Dish", _
"pork chops, salsa, orange juice", "****"}
Dim row4 As String() = New String() _
{"Black Bean and Rice Salad", "Salad", _
"black beans, brown rice", _
"****"}
Dim row5 As String() = New String() _
{"Chocolate Cheesecake", "Dessert", "cream cheese", _
"***"}
Dim row6 As String() = New String() _
{"Black Bean Dip", "Appetizer", _
"black beans, sour cream", _
"***"}
Dim rows As Object() = New Object() {row1, row2, _
row3, row4, row5, row6}
Dim rowArray As String()
For Each rowArray In rows
dataGridView.Rows.Add(rowArray)
Next
shortMode = False
boringRecipe = True
End Sub
Private Sub AddButton(ByVal button As Button, _
ByVal buttonLabel As String)
FlowLayoutPanel1.Controls.Add(button)
button.TabIndex = FlowLayoutPanel1.Controls.Count
button.Text = buttonLabel
button.AutoSize = True
End Sub
Private Sub ResetToDisorder(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
Controls.Remove(dataGridview)
dataGridView.Dispose()
InitializeDataGridView(Nothing, Nothing)
End Sub
Private Sub ChangeColumn3Header(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles Button2.Click
Toggle(shortMode)
If shortMode Then dataGridView.Columns(2).HeaderText = _
"S" _
Else dataGridView.Columns(2).HeaderText = _
thirdColumnHeader
End Sub
Private Shared Sub Toggle(ByRef toggleThis As Boolean)
toggleThis = Not toggleThis
End Sub
Private Sub ChangeMeatloafRecipe(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles Button3.Click
Toggle(boringRecipe)
If boringRecipe Then
SetMeatloaf(boringMeatloaf, boringMeatloafRanking)
Else
Dim greatMeatloafRecipe As String = "1 lb. lean ground beef, " _
& "1/2 cup bread crumbs, 1/4 cup ketchup," _
& "1/3 tsp onion powder, " _
& "1 clove of garlic, 1/2 pack onion soup mix " _
& " dash of your favorite BBQ Sauce"
SetMeatloaf(greatMeatloafRecipe, "***")
End If
End Sub
Private Sub SetMeatloaf(ByVal recipe As String, _
ByVal rating As String)
dataGridView.Rows(0).Cells(2).Value = recipe
dataGridView.Rows(0).Cells(3).Value = rating
End Sub
#End Region
#Region "demonstration code"
Private Sub PostColumnCreation()
AddContextLabel()
AddCriteriaLabel()
CustomizeCellsInThirdColumn()
AddContextMenu()
SetDefaultCellInFirstColumn()
ToolTips()
End Sub
Private criteriaLabel As String = "Column 3 sizing criteria: "
Private Sub AddCriteriaLabel()
AddLabelToPanelIfNotAlreadyThere(criteriaLabel, _
criteriaLabel & _
dataGridView.Columns(2).AutoSizeMode.ToString() _
& ".")
End Sub
Private Sub AddContextLabel()
Dim labelName As String = "label"
AddLabelToPanelIfNotAlreadyThere(labelName, _
"Use shortcut menu to change cell color.")
End Sub
Private Sub AddLabelToPanelIfNotAlreadyThere( _
ByVal labelName As String, _
ByVal labelText As String)
Dim label As Label
If FlowLayoutPanel1.Controls(labelName) Is Nothing Then
label = New Label()
label.AutoSize = True
label.Name = labelName
label.BackColor = Color.Bisque
FlowLayoutPanel1.Controls.Add(label)
Else
label = CType(FlowLayoutPanel1.Controls(labelName), Label)
End If
label.Text = labelText
End Sub
Private Sub CustomizeCellsInThirdColumn()
Dim thirdColumn As Integer = 2
Dim column As DataGridViewColumn = _
dataGridView.Columns(thirdColumn)
Dim cell As DataGridViewCell = _
New DataGridViewTextBoxCell()
cell.Style.BackColor = Color.Wheat
column.CellTemplate = cell
End Sub
WithEvents toolStripItem1 As New ToolStripMenuItem()
Private Sub AddContextMenu()
toolStripItem1.Text = "Redden"
Dim strip As New ContextMenuStrip()
For Each column As DataGridViewColumn _
In dataGridView.Columns()
column.ContextMenuStrip = strip
column.ContextMenuStrip.Items.Add(toolStripItem1)
Next
End Sub
' Change the cell's color.
Private Sub toolStripItem1_Click(ByVal sender As Object, _
ByVal args As EventArgs) _
Handles toolStripItem1.Click
dataGridView.Rows(mouseLocation.RowIndex) _
.Cells(mouseLocation.ColumnIndex) _
.Style.BackColor = Color.Red
End Sub
Private mouseLocation As DataGridViewCellEventArgs
' Deal with hovering over a cell.
Private Sub dataGridView_CellMouseEnter(ByVal sender As Object, _
ByVal location As DataGridViewCellEventArgs) _
Handles DataGridView.CellMouseEnter
mouseLocation = location
End Sub
Private Sub SetDefaultCellInFirstColumn()
Dim firstColumn As DataGridViewColumn = _
dataGridView.Columns(0)
Dim cellStyle As DataGridViewCellStyle = _
New DataGridViewCellStyle()
cellStyle.BackColor = Color.Thistle
firstColumn.DefaultCellStyle = cellStyle
End Sub
Private Sub ToolTips()
Dim firstColumn As DataGridViewColumn = _
dataGridView.Columns(0)
Dim thirdColumn As DataGridViewColumn = _
dataGridView.Columns(2)
firstColumn.ToolTipText = _
"This is column uses a default cell."
thirdColumn.ToolTipText = _
"This is column uses a template cell." _
& " Changes to one cell's style changes them all."
End Sub
Private Sub AddAdditionalButtons()
AddButton(Button4, "Set Minimum Width of Column Two")
AddButton(Button5, "Set Width of Column One")
AddButton(Button6, "Autosize Third Column")
AddButton(Button7, "Add Thick Vertical Edge")
AddButton(Button8, "Style and Number Columns")
AddButton(Button9, "Change Column Header Text")
AddButton(Button10, "Swap First and Last Columns")
End Sub
Private Sub AdjustDataGridViewSizing()
dataGridView.ColumnHeadersHeightSizeMode = _
DataGridViewColumnHeadersHeightSizeMode.AutoSize
End Sub
'Set the minimum width.
Private Sub Button4_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button4.Click
Dim column As DataGridViewColumn = dataGridView.Columns(1)
column.MinimumWidth = 40
End Sub
' Set the width.
Private Sub Button5_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button5.Click
Dim column As DataGridViewColumn = dataGridView.Columns(0)
column.Width = 60
End Sub
' AutoSize the third column.
Private Sub Button6_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button6.Click
Dim column As DataGridViewColumn = dataGridView.Columns(2)
column.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
End Sub
' Set the vertical edge.
Private Sub Button7_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button7.Click
Dim thirdColumn As Integer = 2
Dim column As DataGridViewColumn = _
dataGridView.Columns(thirdColumn)
column.DividerWidth = 10
End Sub
' Style and number columns.
Private Sub Button8_Click(ByVal sender As Object, _
ByVal args As EventArgs) Handles Button8.Click
Dim style As DataGridViewCellStyle = _
New DataGridViewCellStyle()
style.Alignment = _
DataGridViewContentAlignment.MiddleCenter
style.ForeColor = Color.IndianRed
style.BackColor = Color.Ivory
For Each column As DataGridViewColumn _
In dataGridView.Columns
column.HeaderCell.Value = _
column.Index.ToString
column.HeaderCell.Style = style
Next
End Sub
' Change the text in the column header.
Private Sub Button9_Click(ByVal sender As Object, _
ByVal args As EventArgs) Handles Button9.Click
For Each column As DataGridViewColumn _
In dataGridView.Columns
column.HeaderText = String.Concat("Column ", _
column.Index.ToString)
Next
End Sub
' Swap the last column with the first.
Private Sub Button10_Click(ByVal sender As Object, _
ByVal args As EventArgs) Handles Button10.Click
Dim columnCollection As DataGridViewColumnCollection = _
dataGridView.Columns
Dim firstVisibleColumn As DataGridViewColumn = _
columnCollection.GetFirstColumn(DataGridViewElementStates.Visible)
Dim lastVisibleColumn As DataGridViewColumn = _
columnCollection.GetLastColumn(DataGridViewElementStates.Visible, _
Nothing)
Dim firstColumn_sIndex As Integer = firstVisibleColumn.DisplayIndex
firstVisibleColumn.DisplayIndex = _
lastVisibleColumn.DisplayIndex
lastVisibleColumn.DisplayIndex = firstColumn_sIndex
End Sub
' Updated the criteria label.
Private Sub dataGridView_AutoSizeColumnCriteriaChanged( _
ByVal sender As Object, _
ByVal args As DataGridViewAutoSizeColumnModeEventArgs) _
Handles DataGridView.AutoSizeColumnModeChanged
args.Column.DataGridView.Parent. _
Controls("flowlayoutpanel"). _
Controls(criteriaLabel).Text = _
criteriaLabel & args.Column.AutoSizeMode.ToString
End Sub
#End Region
<STAThreadAttribute()> _
Public Shared Sub Main()
Application.Run(New DataGridViewColumnDemo())
End Sub
End Class
Commenti
La DataGridViewColumn classe rappresenta una colonna logica in un DataGridView controllo . È possibile recuperare colonne tramite la Columns raccolta del controllo .
A differenza di un DataGridViewRowoggetto , che contiene l'insieme effettivo di celle in un DataGridView, DataGridViewColumn viene usato principalmente per regolare l'aspetto e il comportamento dell'interfaccia utente della colonna, ad esempio la larghezza della colonna e lo stile della cella. Per altre informazioni sugli stili di cella, vedere Stili di cella nel controllo DataGridView Windows Forms.
I tipi che derivano da DataGridViewColumn inizializzano in genere la CellTemplate proprietà in una nuova istanza di un tipo correlato derivato dalla DataGridViewCell classe . Tutte le proprietà di colonna correlate all'aspetto o al comportamento delle singole celle sono wrapper per le proprietà corrispondenti della cella modello. La modifica di una di queste proprietà nella colonna modifica automaticamente il valore nel modello di cella e in tutte le celle della colonna. Per eseguire l'override del valore specificato per singole celle, impostare i valori della cella dopo aver impostato il valore della colonna.
Note per gli eredi
Quando si deriva da DataGridViewColumn e si aggiungono nuove proprietà alla classe derivata, assicurarsi di eseguire l'override del Clone() metodo per copiare le nuove proprietà durante le operazioni di clonazione. È anche necessario chiamare il metodo della classe di Clone() base in modo che le proprietà della classe di base vengano copiate nella nuova cella.
Costruttori
DataGridViewColumn() |
Inizializza una nuova istanza della classe DataGridViewColumn in base allo stato predefinito. |
DataGridViewColumn(DataGridViewCell) |
Inizializza una nuova istanza della classe DataGridViewColumn usando una classe DataGridViewCell come modello. |
Proprietà
AutoSizeMode |
Ottiene o imposta la modalità usata per la regolazione automatica della larghezza della colonna. |
CellTemplate |
Ottiene o imposta il modello usato per la creazione di nuove celle. |
CellType |
Ottiene il tipo di runtime del modello di cella. |
ContextMenuStrip |
Ottiene o imposta il menu di scelta rapida per la colonna. |
DataGridView |
Ottiene il controllo DataGridView associato a questo elemento. (Ereditato da DataGridViewElement) |
DataPropertyName |
Ottiene o imposta il nome della proprietà dell'origine dati o della colonna del database a cui è associato l'oggetto DataGridViewColumn. |
DefaultCellStyle |
Ottiene o imposta lo stile predefinito per le celle della colonna. |
DefaultHeaderCellType |
Ottiene o imposta il tipo in fase di esecuzione della cella di intestazione predefinita. (Ereditato da DataGridViewBand) |
Displayed |
Ottiene un valore che indica se la banda è attualmente visualizzata sullo schermo. (Ereditato da DataGridViewBand) |
DisplayIndex |
Ottiene o imposta l'ordine di visualizzazione della colonna relativa alle colonne attualmente visualizzate. |
DividerWidth |
Ottiene o imposta la larghezza, in pixel, del divisore di colonne. |
FillWeight |
Ottiene o imposta un valore che rappresenta la larghezza della colonna in modalità di riempimento relativamente alle larghezze di altre colonne in modalità di riempimento presenti nel controllo. |
Frozen |
Ottiene o imposta un valore che indica se una colonna si sposterà quando l'utente scorre orizzontalmente il controllo DataGridView. |
HasDefaultCellStyle |
Ottiene un valore che indica se la proprietà DefaultCellStyle è stata impostata. (Ereditato da DataGridViewBand) |
HeaderCell |
Ottiene o imposta l'oggetto DataGridViewColumnHeaderCell che rappresenta l'intestazione della colonna. |
HeaderCellCore |
Ottiene o imposta la cella di intestazione dell'oggetto DataGridViewBand. (Ereditato da DataGridViewBand) |
HeaderText |
Ottiene o imposta il testo del titolo sulla cella di intestazione della colonna. |
Index |
Ottiene la posizione relativa della banda all'interno del controllo DataGridView. (Ereditato da DataGridViewBand) |
InheritedAutoSizeMode |
Ottiene la modalità di dimensionamento attiva per la riga. |
InheritedStyle |
Ottiene lo stile della cella attualmente applicato alla colonna. |
IsDataBound |
Ottiene un valore che indica se la colonna è associata a un'origine dati. |
IsRow |
Ottiene un valore che indica se la banda rappresenta una riga. (Ereditato da DataGridViewBand) |
MinimumWidth |
Ottiene o imposta la larghezza minima, in pixel, della colonna. |
Name |
Ottiene o imposta il nome della colonna. |
ReadOnly |
Ottiene o imposta un valore che indica se l'utente può modificare le celle della colonna. |
Resizable |
Ottiene o imposta un valore che indica se la colonna è ridimensionabile. |
Selected |
Ottiene o imposta un valore che indica se la banda è correntemente selezionata nell'interfaccia utente. (Ereditato da DataGridViewBand) |
Site |
Ottiene o imposta il sito della colonna. |
SortMode |
Ottiene o imposta la modalità di ordinamento della colonna. |
State |
Ottiene lo stato dell'interfaccia utente dell'elemento. (Ereditato da DataGridViewElement) |
Tag |
Ottiene o imposta l'oggetto contenente i dati da associare alla banda. (Ereditato da DataGridViewBand) |
ToolTipText |
Ottiene o imposta il testo usato per la descrizione comandi. |
ValueType |
Ottiene o imposta il tipo di dati dei valori delle celle della colonna. |
Visible |
Ottiene o imposta un valore che indica se la colonna è visibile. |
Width |
Ottiene o imposta la larghezza corrente della colonna. |
Metodi
Clone() |
Crea una copia esatta della banda. |
Dispose() |
Rilascia tutte le risorse usate da DataGridViewBand. (Ereditato da DataGridViewBand) |
Dispose(Boolean) |
Rilascia le risorse non gestite usate da DataGridViewBand e, facoltativamente, le risorse gestite. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean) |
Calcola la larghezza ideale della colonna in base ai criteri specificati. |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
OnDataGridViewChanged() |
Viene chiamato quando la banda è associata a un oggetto DataGridView differente. (Ereditato da DataGridViewBand) |
RaiseCellClick(DataGridViewCellEventArgs) |
Genera l'evento CellClick. (Ereditato da DataGridViewElement) |
RaiseCellContentClick(DataGridViewCellEventArgs) |
Genera l'evento CellContentClick. (Ereditato da DataGridViewElement) |
RaiseCellContentDoubleClick(DataGridViewCellEventArgs) |
Genera l'evento CellContentDoubleClick. (Ereditato da DataGridViewElement) |
RaiseCellValueChanged(DataGridViewCellEventArgs) |
Genera l'evento CellValueChanged. (Ereditato da DataGridViewElement) |
RaiseDataError(DataGridViewDataErrorEventArgs) |
Genera l'evento DataError. (Ereditato da DataGridViewElement) |
RaiseMouseWheel(MouseEventArgs) |
Genera l'evento MouseWheel. (Ereditato da DataGridViewElement) |
ToString() |
Ottiene una stringa che descrive la colonna. |
Eventi
Disposed |
Si verifica quando viene eliminato l'oggetto DataGridViewColumn. |