Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

DataGridViewComboBoxColumn-Klasse

 

Veröffentlicht: Oktober 2016

Stellt eine Spalte von DataGridViewComboBoxCell-Objekten dar.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

System.Object
  System.Windows.Forms.DataGridViewElement
    System.Windows.Forms.DataGridViewBand
      System.Windows.Forms.DataGridViewColumn
        System.Windows.Forms.DataGridViewComboBoxColumn

[ToolboxBitmapAttribute(typeof(DataGridViewComboBoxColumn), "DataGridViewComboBoxColumn.bmp")]
public class DataGridViewComboBoxColumn : DataGridViewColumn

NameBeschreibung
System_CAPS_pubmethodDataGridViewComboBoxColumn()

Initialisiert eine neue Instanz der DataGridViewTextBoxColumn-Klasse im Standardzustand.

NameBeschreibung
System_CAPS_pubpropertyAutoComplete

Ruft einen Wert an, der angibt, ob Zellen in der Spalte die in die jeweilige Zelle eingegebenen Werte mit den möglichen Auswahlmöglichkeiten vergleichen, oder legt diesen fest.

System_CAPS_pubpropertyAutoSizeMode

Ruft den Modus ab, in dem die Spalte automatisch ihre Breite anpasst, oder legt diesen Modus fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyCellTemplate

Ruft die Vorlage ab, mit deren Hilfe Zellen erstellt werden, oder legt diese fest.(Überschreibt DataGridViewColumn.CellTemplate.)

System_CAPS_pubpropertyCellType

Ruft den Laufzeittyp der Zellvorlage ab.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyContextMenuStrip

Ruft das Kontextmenü für die Spalte ab oder legt dieses fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyDataGridView

Ruft die DataGridView Steuerelement, die diesem Element zugeordnet.(Geerbt von „DataGridViewElement“.)

System_CAPS_pubpropertyDataPropertyName

Ruft den Namen der Datenquelleneigenschaft oder Datenbankspalte ab, an die DataGridViewColumn gebunden ist, oder legt diesen Namen fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyDataSource

Ruft die Datenquelle ab, die die Auswahlmöglichkeiten für die Kombinationsfelder füllt, oder legt diese fest.

System_CAPS_pubpropertyDefaultCellStyle

Ruft das Standardzellenformat der Spalte ab oder legt dieses fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyDefaultHeaderCellType

Ruft ab oder legt den Laufzeittyp der Kopfzeilenzelle Standard.(Geerbt von „DataGridViewBand“.)

System_CAPS_pubpropertyDisplayed

Ruft einen Wert, der angibt, ob das Band gegenwärtig auf dem Bildschirm angezeigt wird.(Geerbt von „DataGridViewBand“.)

System_CAPS_pubpropertyDisplayIndex

Ruft die Anzeigereihenfolge der Spalte relativ zu den derzeit angezeigten Spalten ab oder legt sie fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyDisplayMember

Ruft eine Zeichenfolge ab, die die Eigenschaft oder Spalte angibt, aus der die in den Kombinationsfeldern anzuzeigenden Zeichenfolgen abgerufen werden, oder legt diese fest.

System_CAPS_pubpropertyDisplayStyle

Ruft einen Wert ab, der bestimmt, wie das Kombinationsfeld angezeigt wird, wenn es nicht bearbeitet wird, oder legt diesen fest.

System_CAPS_pubpropertyDisplayStyleForCurrentCellOnly

Ruft einen Wert ab, der angibt, ob der DisplayStyle-Eigenschaftswert nur für die aktuelle Zelle im DataGridView-Steuerelement gilt, wenn die aktuelle Zelle sich in dieser Spalte befindet, oder legt diesen fest.

System_CAPS_pubpropertyDividerWidth

Ruft die Breite des Spaltenunterteilers in Pixel ab oder legt sie fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyDropDownWidth

Ruft die Breite der Dropdownlisten der Kombinationsfelder ab oder legt diese fest.

System_CAPS_pubpropertyFillWeight

Ruft einen Wert ab, der die Breite der Spalte im Füllmodus relativ zur Breite anderer im Steuerelement vorhandener Spalten im Füllmodus darstellt, oder legt diesen Wert fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyFlatStyle

Ruft die unformatierte Darstellung der Zellen der Spalte ab oder legt diese fest.

System_CAPS_pubpropertyFrozen

Ruft einen Wert ab, der angibt, ob eine Spalte verschoben wird, wenn ein Benutzer einen horizontalen Bildlauf durch das DataGridView-Steuerelement durchführt, oder legt diesen Wert fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyHasDefaultCellStyle

Ruft einen Wert, der angibt, ob die DefaultCellStyle -Eigenschaft festgelegt wurde.(Geerbt von „DataGridViewBand“.)

System_CAPS_pubpropertyHeaderCell

Ruft die DataGridViewColumnHeaderCell ab, die den Spaltenheader darstellt, oder legt sie fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_protpropertyHeaderCellCore

Ruft ab oder legt die Headerzelle der DataGridViewBand.(Geerbt von „DataGridViewBand“.)

System_CAPS_pubpropertyHeaderText

Ruft den Beschriftungstext für die Headerzelle der Spalte ab oder legt ihn fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyIndex

Ruft die relative Position des Bands in der DataGridView Steuerelement.(Geerbt von „DataGridViewBand“.)

System_CAPS_pubpropertyInheritedAutoSizeMode

Ruft den für die Spalte gültigen Modus zum Festlegen der Größe ab.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyInheritedStyle

Ruft den Zellstil ab, der gegenwärtig auf die Spalte angewendet wird.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyIsDataBound

Ruft einen Wert ab, der angibt, ob die Spalte an eine Datenquelle gebunden ist.(Geerbt von „DataGridViewColumn“.)

System_CAPS_protpropertyIsRow

Ruft einen Wert, der angibt, ob das Band eine Zeile darstellt.(Geerbt von „DataGridViewBand“.)

System_CAPS_pubpropertyItems

Ruft die Auflistung der Objekte ab, die als Auswahlmöglichkeiten in den Kombinationsfeldern verwendet werden.

System_CAPS_pubpropertyMaxDropDownItems

Ruft die maximale Anzahl von Elementen in der Dropdownliste der Zellen in der Spalte ab oder legt diese fest.

System_CAPS_pubpropertyMinimumWidth

Ruft die minimale Breite der Spalte in Pixel ab oder legt sie fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyName

Ruft den Namen der Spalte ab oder legt ihn fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyReadOnly

Ruft einen Wert ab, der angibt, ob der Benutzer die Zellen der Spalte bearbeiten kann, oder legt diesen Wert fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyResizable

Ruft einen Wert ab, der angibt, ob die Größe der Spalte geändert werden kann, oder legt diesen fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertySelected

Ruft ab oder legt einen Wert, der angibt, ob das Band einen ausgewählten Benutzer Benutzeroberfläche (UI) ist.(Geerbt von „DataGridViewBand“.)

System_CAPS_pubpropertySite

Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Ruft die Site der Spalte ab oder legt sie fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertySorted

Ruft einen Wert ab, der angibt, ob die Elemente im Kombinationsfeld sortiert sind, oder legt diesen fest.

System_CAPS_pubpropertySortMode

Ruft den Sortiermodus für die Spalte ab oder legt diesen fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyState

Ruft den Zustand des Benutzer-Benutzeroberfläche (UI) des Elements.(Geerbt von „DataGridViewElement“.)

System_CAPS_pubpropertyTag

Ruft ab oder legt das Objekt, das Band zuzuordnende Daten enthält.(Geerbt von „DataGridViewBand“.)

System_CAPS_pubpropertyToolTipText

Ruft den für QuickInfos verwendeten Text ab oder legt diesen fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyValueMember

Ruft eine Zeichenfolge ab, die die Eigenschaft oder Spalte angibt, aus der die Werte abgerufen werden, die den Auswahlmöglichkeiten im Kombinationsfeld entsprechen, oder legt diese fest.

System_CAPS_pubpropertyValueType

Ruft den Datentyp der Werte in den Zellen der Spalte ab oder legt ihn fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyVisible

Ruft einen Wert ab, der angibt, ob die Spalte sichtbar ist, oder legt diesen Wert fest.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubpropertyWidth

Ruft die aktuelle Breite der Spalte ab oder legt sie fest.(Geerbt von „DataGridViewColumn“.)

NameBeschreibung
System_CAPS_pubmethodClone()

Erstellt eine genaue Kopie dieser Spalte.(Überschreibt DataGridViewColumn.Clone().)

System_CAPS_pubmethodDispose()

Gibt alle vom DataGridViewBand verwendeten Ressourcen frei.(Geerbt von „DataGridViewBand“.)

System_CAPS_protmethodDispose(Boolean)

Gibt die von DataGridViewBand verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_protmethodFinalize()

Gibt die dem Band zugeordneten Ressourcen frei.(Geerbt von „DataGridViewBand“.)

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

Berechnet die ideale Breite der Spalte auf der Grundlage der angegebenen Kriterien.(Geerbt von „DataGridViewColumn“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_protmethodOnDataGridViewChanged()

Wird aufgerufen, wenn das Band mit einer anderen zugehörigen DataGridView.(Geerbt von „DataGridViewBand“.)

System_CAPS_protmethodRaiseCellClick(DataGridViewCellEventArgs)

Löst das DataGridView.CellClick-Ereignis aus.(Geerbt von „DataGridViewElement“.)

System_CAPS_protmethodRaiseCellContentClick(DataGridViewCellEventArgs)

Löst das DataGridView.CellContentClick-Ereignis aus.(Geerbt von „DataGridViewElement“.)

System_CAPS_protmethodRaiseCellContentDoubleClick(DataGridViewCellEventArgs)

Löst das DataGridView.CellContentDoubleClick-Ereignis aus.(Geerbt von „DataGridViewElement“.)

System_CAPS_protmethodRaiseCellValueChanged(DataGridViewCellEventArgs)

Löst das DataGridView.CellValueChanged-Ereignis aus.(Geerbt von „DataGridViewElement“.)

System_CAPS_protmethodRaiseDataError(DataGridViewDataErrorEventArgs)

Löst das DataGridView.DataError-Ereignis aus.(Geerbt von „DataGridViewElement“.)

System_CAPS_protmethodRaiseMouseWheel(MouseEventArgs)

Löst das Control.MouseWheel-Ereignis aus.(Geerbt von „DataGridViewElement“.)

System_CAPS_pubmethodToString()

Ruft eine Zeichenfolge ab, die die Spalte beschreibt.(Überschreibt DataGridViewColumn.ToString().)

NameBeschreibung
System_CAPS_pubeventDisposed

Tritt ein, wenn die DataGridViewColumn freigegeben ist.(Geerbt von „DataGridViewColumn“.)

The T:System.Windows.Forms.DataGridViewComboBoxColumn class is a specialized type of T:System.Windows.Forms.DataGridViewColumn used to logically host cells that enable users to select values from a list of choices. A T:System.Windows.Forms.DataGridViewComboBoxColumn has an associated T:System.Windows.Forms.DataGridViewComboBoxCell in every T:System.Windows.Forms.DataGridViewRow that intersects it.

You can populate the cells manually by setting their P:System.Windows.Forms.DataGridViewCell.Value properties. Alternatively, you can bind the column to the data source indicated by the P:System.Windows.Forms.DataGridView.DataSource property. If the T:System.Windows.Forms.DataGridView is bound to a database table, set the column P:System.Windows.Forms.DataGridViewColumn.DataPropertyName property to the name of a column in the table. If the T:System.Windows.Forms.DataGridView is bound to a collection of objects, set the P:System.Windows.Forms.DataGridViewColumn.DataPropertyName property to the name of an object property.

You can populate the column drop-down list manually by adding values to the P:System.Windows.Forms.DataGridViewComboBoxColumn.Items collection. Alternatively, you can bind the drop-down list to its own data source by setting the column P:System.Windows.Forms.DataGridViewComboBoxColumn.DataSource property. If the values are objects in a collection or records in a database table, you must also set the P:System.Windows.Forms.DataGridViewComboBoxColumn.DisplayMember and P:System.Windows.Forms.DataGridViewComboBoxColumn.ValueMember properties. The P:System.Windows.Forms.DataGridViewComboBoxColumn.DisplayMember property indicates which object property or database column provides the values that are displayed in the drop-down list. The P:System.Windows.Forms.DataGridViewComboBoxColumn.ValueMember property indicates which object property or database column is used to set the cell P:System.Windows.Forms.DataGridViewCell.Value property.

One typical scenario is to bind the T:System.Windows.Forms.DataGridView control to a parent database table and bind the drop-down list to a related child table. For example, you might bind the T:System.Windows.Forms.DataGridView control to an Orders table that contains a ProductID column and set the column P:System.Windows.Forms.DataGridViewComboBoxColumn.DataSource property to a Products table that contains ProductID and ProductName columns. In this case, you would set the column P:System.Windows.Forms.DataGridViewColumn.DataPropertyName property to "ProductID" to populate its cell values from the Orders.ProductID column. However, to display the actual product names in the cells and the drop-down list, you would map these values to the Products table by setting the P:System.Windows.Forms.DataGridViewComboBoxColumn.ValueMember property to "ProductID" and the P:System.Windows.Forms.DataGridViewComboBoxColumn.DisplayMember property to "ProductName".

The drop-down list values (or the values indicated by the P:System.Windows.Forms.DataGridViewComboBoxColumn.ValueMember property) must include the actual cell values or the T:System.Windows.Forms.DataGridView control will throw an exception.

Setting the column P:System.Windows.Forms.DataGridViewComboBoxColumn.DataSource, P:System.Windows.Forms.DataGridViewComboBoxColumn.DisplayMember, and P:System.Windows.Forms.DataGridViewComboBoxColumn.ValueMember properties automatically sets the corresponding properties of all cells in the column including the P:System.Windows.Forms.DataGridViewComboBoxColumn.CellTemplate. To override these property values for specific cells, set the column property first, and then set the cell properties.

Unlike the T:System.Windows.Forms.ComboBox control, the T:System.Windows.Forms.DataGridViewComboBoxCell does not have P:System.Windows.Forms.ComboBox.SelectedIndex and P:System.Windows.Forms.ListControl.SelectedValue properties. Instead, selecting a value from a drop-down list sets the cell P:System.Windows.Forms.DataGridViewCell.Value property.

The default sort mode for this column type is F:System.Windows.Forms.DataGridViewColumnSortMode.NotSortable.

Hinweise für Vererber:

When you derive from T:System.Windows.Forms.DataGridViewComboBoxColumn and add new properties to the derived class, be sure to override the M:System.Windows.Forms.DataGridViewComboBoxColumn.Clone method to copy the new properties during cloning operations. You should also call the base class's M:System.Windows.Forms.DataGridViewComboBoxColumn.Clone method so that the properties of the base class are copied to the new cell.

The following code example demonstrates how to use a T:System.Windows.Forms.DataGridViewComboBoxColumn to aid in entering data into the TitleOfCourtesy column.

using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Drawing;

public class Employees : Form
{
    private DataGridView DataGridView1 = new DataGridView();
    private DataGridView DataGridView2 = new DataGridView();

    [STAThread]
    public static void Main()
    {
        try
        {
            Application.EnableVisualStyles();
            Application.Run(new Employees());
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message + e.StackTrace);
        }
    }

    public Employees()
    {
        this.Load += new EventHandler(Form1_Load);
    }

    private void Form1_Load(System.Object sender, System.EventArgs e)
    {
        try
        {
            SetUpForm();
            SetUpDataGridView1();
            SetUpDataGridView2();
        }
        catch (SqlException)
        {
            MessageBox.Show("The connection string <"
                + connectionString
                + "> failed to connect.  Modify it "
                + "to connect to a Northwind database accessible to "
                + "your system.",
                "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            Application.Exit();
        }
    }

    private void SetUpForm()
    {
        Size = new Size(800, 600);
        FlowLayoutPanel flowLayout = new FlowLayoutPanel();
        flowLayout.FlowDirection = FlowDirection.TopDown;
        flowLayout.Dock = DockStyle.Fill;
        Controls.Add(flowLayout);
        Text = "DataGridView columns demo";

        flowLayout.Controls.Add(DataGridView1);
        flowLayout.Controls.Add(DataGridView2);
    }

    private void SetUpDataGridView2()
    {
        DataGridView2.Dock = DockStyle.Bottom;
        DataGridView2.TopLeftHeaderCell.Value = "Sales Details";
        DataGridView2.RowHeadersWidthSizeMode = 
            DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
    }

    private void SetUpDataGridView1()
    {
        DataGridView1.DataError += new 
            DataGridViewDataErrorEventHandler(DataGridView1_DataError);
        DataGridView1.CellContentClick += new 
            DataGridViewCellEventHandler(DataGridView1_CellContentClick);
        DataGridView1.CellValuePushed += new 
            DataGridViewCellValueEventHandler(DataGridView1_CellValuePushed);
        DataGridView1.CellValueNeeded += new 
            DataGridViewCellValueEventHandler(DataGridView1_CellValueNeeded);

        // Virtual mode is turned on so that the
        // unbound DataGridViewCheckBoxColumn will
        // keep its state when the bound columns are
        // sorted.       
        DataGridView1.VirtualMode = true;
        DataGridView1.AutoSize = true;
        DataGridView1.DataSource = Populate("SELECT * FROM Employees");
        DataGridView1.TopLeftHeaderCell.Value = "Employees";
        DataGridView1.RowHeadersWidthSizeMode = 
            DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
        DataGridView1.ColumnHeadersHeightSizeMode = 
            DataGridViewColumnHeadersHeightSizeMode.AutoSize;
        DataGridView1.AutoSizeColumnsMode = 
            DataGridViewAutoSizeColumnsMode.AllCells;
        DataGridView1.AllowUserToAddRows = false;
        DataGridView1.AllowUserToDeleteRows = false;

        // The below autogenerated column is removed so 
        // a DataGridViewComboboxColumn could be used instead.
        DataGridView1.Columns.Remove(ColumnName.TitleOfCourtesy.ToString());
        DataGridView1.Columns.Remove(ColumnName.ReportsTo.ToString());

        AddLinkColumn();
        AddComboBoxColumns();
        AddButtonColumn();
        AddOutOfOfficeColumn();
    }

    private void AddComboBoxColumns()
    {
        DataGridViewComboBoxColumn comboboxColumn;
        comboboxColumn = CreateComboBoxColumn();
        SetAlternateChoicesUsingDataSource(comboboxColumn);
        comboboxColumn.HeaderText = "TitleOfCourtesy (via DataSource property)";
        DataGridView1.Columns.Insert(0, comboboxColumn);

        comboboxColumn = CreateComboBoxColumn();
        SetAlternateChoicesUsingItems(comboboxColumn);
        comboboxColumn.HeaderText = "TitleOfCourtesy (via Items property)";
        // Tack this example column onto the end.
        DataGridView1.Columns.Add(comboboxColumn);
    }

    private void AddLinkColumn()
    {
        DataGridViewLinkColumn links = new DataGridViewLinkColumn();

        links.UseColumnTextForLinkValue = true;
        links.HeaderText = ColumnName.ReportsTo.ToString();
        links.DataPropertyName = ColumnName.ReportsTo.ToString();
        links.ActiveLinkColor = Color.White;
        links.LinkBehavior = LinkBehavior.SystemDefault;
        links.LinkColor = Color.Blue;
        links.TrackVisitedState = true;
        links.VisitedLinkColor = Color.YellowGreen;

        DataGridView1.Columns.Add(links);
    }

    private static void SetAlternateChoicesUsingItems(
        DataGridViewComboBoxColumn comboboxColumn)
    {
        comboboxColumn.Items.AddRange("Mr.", "Ms.", "Mrs.", "Dr.");
    }

    private DataGridViewComboBoxColumn CreateComboBoxColumn()
    {
        DataGridViewComboBoxColumn column =
            new DataGridViewComboBoxColumn();
        {
            column.DataPropertyName = ColumnName.TitleOfCourtesy.ToString();
            column.HeaderText = ColumnName.TitleOfCourtesy.ToString();
            column.DropDownWidth = 160;
            column.Width = 90;
            column.MaxDropDownItems = 3;
            column.FlatStyle = FlatStyle.Flat;
        }
        return column;
    }

    private void SetAlternateChoicesUsingDataSource(DataGridViewComboBoxColumn comboboxColumn)
    {
        {
            comboboxColumn.DataSource = RetrieveAlternativeTitles();
            comboboxColumn.ValueMember = ColumnName.TitleOfCourtesy.ToString();
            comboboxColumn.DisplayMember = comboboxColumn.ValueMember;
        }
    }

    private DataTable RetrieveAlternativeTitles()
    {
        return Populate("SELECT distinct TitleOfCourtesy FROM Employees");
    }

    string connectionString =
        "Integrated Security=SSPI;Persist Security Info=False;" +
        "Initial Catalog=Northwind;Data Source=localhost";

    private DataTable Populate(string sqlCommand)
    {
        SqlConnection northwindConnection = new SqlConnection(connectionString);
        northwindConnection.Open();

        SqlCommand command = new SqlCommand(sqlCommand, northwindConnection);
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = command;

        DataTable table = new DataTable();
        table.Locale = System.Globalization.CultureInfo.InvariantCulture;
        adapter.Fill(table);

        return table;
    }

    // Using an enum provides some abstraction between column index
    // and column name along with compile time checking, and gives
    // a handy place to store the column names.
    enum ColumnName
    {
        EmployeeId,
        LastName,
        FirstName,
        Title,
        TitleOfCourtesy,
        BirthDate,
        HireDate,
        Address,
        City,
        Region,
        PostalCode,
        Country,
        HomePhone,
        Extension,
        Photo,
        Notes,
        ReportsTo,
        PhotoPath,
        OutOfOffice
    };

    private void AddButtonColumn()
    {
        DataGridViewButtonColumn buttons = new DataGridViewButtonColumn();
        {
            buttons.HeaderText = "Sales";
            buttons.Text = "Sales";
            buttons.UseColumnTextForButtonValue = true;
            buttons.AutoSizeMode =
                DataGridViewAutoSizeColumnMode.AllCells;
            buttons.FlatStyle = FlatStyle.Standard;
            buttons.CellTemplate.Style.BackColor = Color.Honeydew;
            buttons.DisplayIndex = 0;
        }

        DataGridView1.Columns.Add(buttons);

    }

    private void AddOutOfOfficeColumn()
    {
        DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn();
        {
            column.HeaderText = ColumnName.OutOfOffice.ToString();
            column.Name = ColumnName.OutOfOffice.ToString();
            column.AutoSizeMode = 
                DataGridViewAutoSizeColumnMode.DisplayedCells;
            column.FlatStyle = FlatStyle.Standard;
            column.ThreeState = true;
            column.CellTemplate = new DataGridViewCheckBoxCell();
            column.CellTemplate.Style.BackColor = Color.Beige;
        }

        DataGridView1.Columns.Insert(0, column);
    }

    private void PopulateSales(DataGridViewCellEventArgs buttonClick)
    {

        string employeeId = DataGridView1.Rows[buttonClick.RowIndex]
            .Cells[ColumnName.EmployeeId.ToString()].Value.ToString();
        DataGridView2.DataSource = Populate("SELECT * FROM Orders WHERE EmployeeId = " + employeeId);
    }

    #region "SQL Error handling"
    private void DataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs anError)
    {

        MessageBox.Show("Error happened " + anError.Context.ToString());

        if (anError.Context == DataGridViewDataErrorContexts.Commit)
        {
            MessageBox.Show("Commit error");
        }
        if (anError.Context == DataGridViewDataErrorContexts.CurrentCellChange)
        {
            MessageBox.Show("Cell change");
        }
        if (anError.Context == DataGridViewDataErrorContexts.Parsing)
        {
            MessageBox.Show("parsing error");
        }
        if (anError.Context == DataGridViewDataErrorContexts.LeaveControl)
        {
            MessageBox.Show("leave control error");
        }

        if ((anError.Exception) is ConstraintException)
        {
            DataGridView view = (DataGridView)sender;
            view.Rows[anError.RowIndex].ErrorText = "an error";
            view.Rows[anError.RowIndex].Cells[anError.ColumnIndex].ErrorText = "an error";

            anError.ThrowException = false;
        }
    }
    #endregion

    private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {

        if (IsANonHeaderLinkCell(e))
        {
            MoveToLinked(e);
        }
        else if (IsANonHeaderButtonCell(e))
        {
            PopulateSales(e);
        }
    }

    private void MoveToLinked(DataGridViewCellEventArgs e)
    {
        string employeeId;
        object value = DataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
        if (value is DBNull) { return; }

        employeeId = value.ToString();
        DataGridViewCell boss = RetrieveSuperiorsLastNameCell(employeeId);
        if (boss != null)
        {
            DataGridView1.CurrentCell = boss;
        }
    }

    private bool IsANonHeaderLinkCell(DataGridViewCellEventArgs cellEvent)
    {
        if (DataGridView1.Columns[cellEvent.ColumnIndex] is
            DataGridViewLinkColumn &&
            cellEvent.RowIndex != -1)
        { return true; }
        else { return false; }
    }

    private bool IsANonHeaderButtonCell(DataGridViewCellEventArgs cellEvent)
    {
        if (DataGridView1.Columns[cellEvent.ColumnIndex] is
            DataGridViewButtonColumn &&
            cellEvent.RowIndex != -1)
        { return true; }
        else { return (false); }
    }

    private DataGridViewCell RetrieveSuperiorsLastNameCell(string employeeId)
    {

        foreach (DataGridViewRow row in DataGridView1.Rows)
        {
            if (row.IsNewRow) { return null; }
            if (row.Cells[ColumnName.EmployeeId.ToString()].Value.ToString().Equals(employeeId))
            {
                return row.Cells[ColumnName.LastName.ToString()];
            }
        }
        return null;
    }

    #region "checkbox state"
    Dictionary<string, bool> inOffice = new Dictionary<string, bool>();
    private void DataGridView1_CellValuePushed(object sender,
        DataGridViewCellValueEventArgs e)
    {
        if (IsCheckBoxColumn(e.ColumnIndex))
        {
            string employeeId = GetKey(e);
            if (!inOffice.ContainsKey(employeeId))
            {
                inOffice.Add(employeeId, (Boolean)e.Value);
            }
            else
            {
                inOffice[employeeId] = (Boolean)e.Value;
            }
        }
    }

    private string GetKey(DataGridViewCellValueEventArgs cell)
    {
        return DataGridView1.Rows[cell.RowIndex].
            Cells[ColumnName.EmployeeId.ToString()].Value.ToString();
    }

    private void DataGridView1_CellValueNeeded(object sender,
        DataGridViewCellValueEventArgs e)
    {

        if (IsCheckBoxColumn(e.ColumnIndex))
        {
            string employeeId = GetKey(e);
            if (!inOffice.ContainsKey(employeeId))
            {
                bool defaultValue = false;
                inOffice.Add(employeeId, defaultValue);
            }

            e.Value = inOffice[employeeId];
        }
    }

    private bool IsCheckBoxColumn(int columnIndex)
    {
        DataGridViewColumn outOfOfficeColumn =
            DataGridView1.Columns[ColumnName.OutOfOffice.ToString()];
        return (DataGridView1.Columns[columnIndex] == outOfOfficeColumn);
    }
    #endregion
}

.NET Framework
Verfügbar seit 2.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: