Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe DataGridViewComboBoxColumn

 

Data di pubblicazione: ottobre 2016

Rappresenta una colonna di oggetti DataGridViewComboBoxCell.

Spazio dei nomi:   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

NomeDescrizione
System_CAPS_pubmethodDataGridViewComboBoxColumn()

Inizializza una nuova istanza della classe DataGridViewTextBoxColumn in base allo stato predefinito.

NomeDescrizione
System_CAPS_pubpropertyAutoComplete

Ottiene o imposta un valore che indica se verrà cercata automaticamente una corrispondenza tra i caratteri immessi nelle celle della colonna e una delle possibili selezioni.

System_CAPS_pubpropertyAutoSizeMode

Ottiene o imposta la modalità usata per la regolazione automatica della larghezza della colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyCellTemplate

Ottiene o imposta il modello usato per la creazione delle celle.(Esegue l'override di DataGridViewColumn.CellTemplate.)

System_CAPS_pubpropertyCellType

Ottiene il tipo di runtime del modello di cella.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyContextMenuStrip

Ottiene o imposta il menu di scelta rapida per la colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyDataGridView

Ottiene il DataGridView controllo associato a questo elemento.(Ereditato da DataGridViewElement.)

System_CAPS_pubpropertyDataPropertyName

Ottiene o imposta il nome della proprietà dell'origine dati o della colonna del database a cui è associato l'oggetto DataGridViewColumn.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyDataSource

Ottiene o imposta l'origine dati che inserisce le selezioni per le caselle combinate.

System_CAPS_pubpropertyDefaultCellStyle

Ottiene o imposta lo stile predefinito per le celle della colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyDefaultHeaderCellType

Ottiene o imposta il tipo in fase di esecuzione della cella di intestazione predefinito.(Ereditato da DataGridViewBand.)

System_CAPS_pubpropertyDisplayed

Ottiene un valore che indica se la banda è attualmente visualizzata sullo schermo.(Ereditato da DataGridViewBand.)

System_CAPS_pubpropertyDisplayIndex

Ottiene o imposta l'ordine di visualizzazione della colonna relativa alle colonne attualmente visualizzate.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyDisplayMember

Ottiene o imposta una stringa che specifica la proprietà o la colonna dalla quale recuperare le stringhe da visualizzare nelle caselle combinate.

System_CAPS_pubpropertyDisplayStyle

Ottiene o imposta un valore che determina come deve essere visualizzata la casella combinata quando non è in modalità di modifica.

System_CAPS_pubpropertyDisplayStyleForCurrentCellOnly

Ottiene o imposta un valore che indica se il valore della proprietà DisplayStyle viene applicato solo alla cella corrente nel controllo DataGridView quando tale cella si trova in questa colonna.

System_CAPS_pubpropertyDividerWidth

Ottiene o imposta la larghezza, in pixel, del divisore di colonne.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyDropDownWidth

Ottiene o imposta la larghezza degli elenchi a discesa delle caselle combinate.

System_CAPS_pubpropertyFillWeight

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.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyFlatStyle

Ottiene o imposta l'aspetto bidimensionale delle celle della colonna.

System_CAPS_pubpropertyFrozen

Ottiene o imposta un valore che indica se una colonna si sposterà quando l'utente scorre orizzontalmente il controllo DataGridView.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyHasDefaultCellStyle

Ottiene un valore che indica se la DefaultCellStyle proprietà è stata impostata.(Ereditato da DataGridViewBand.)

System_CAPS_pubpropertyHeaderCell

Ottiene o imposta l'oggetto DataGridViewColumnHeaderCell che rappresenta l'intestazione della colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_protpropertyHeaderCellCore

Ottiene o imposta la cella dell'intestazione di DataGridViewBand.(Ereditato da DataGridViewBand.)

System_CAPS_pubpropertyHeaderText

Ottiene o imposta il testo del titolo sulla cella di intestazione della colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyIndex

Ottiene la posizione relativa della banda all'interno di DataGridView controllo.(Ereditato da DataGridViewBand.)

System_CAPS_pubpropertyInheritedAutoSizeMode

Ottiene la modalità di dimensionamento attiva per la riga.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyInheritedStyle

Ottiene lo stile della cella attualmente applicato alla colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyIsDataBound

Ottiene un valore che indica se la colonna è associata a un'origine dati.(Ereditato da DataGridViewColumn.)

System_CAPS_protpropertyIsRow

Ottiene un valore che indica se la banda rappresenta una riga.(Ereditato da DataGridViewBand.)

System_CAPS_pubpropertyItems

Ottiene la raccolta di oggetti usati come selezioni nelle caselle combinate.

System_CAPS_pubpropertyMaxDropDownItems

Ottiene o imposta il numero massimo di elementi nell'elenco a discesa delle celle nella colonna.

System_CAPS_pubpropertyMinimumWidth

Ottiene o imposta la larghezza minima, in pixel, della colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyName

Ottiene o imposta il nome della colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyReadOnly

Ottiene o imposta un valore che indica se l'utente può modificare le celle della colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyResizable

Ottiene o imposta un valore che indica se la colonna è ridimensionabile.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertySelected

Ottiene o imposta un valore che indica se la banda è in uno stato dell'interfaccia utente selezionato.(Ereditato da DataGridViewBand.)

System_CAPS_pubpropertySite

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Ottiene o imposta il sito della colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertySorted

Ottiene o imposta un valore che indica se gli elementi nella casella combinata sono ordinati.

System_CAPS_pubpropertySortMode

Ottiene o imposta la modalità di ordinamento della colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyState

Ottiene lo stato dell'interfaccia utente dell'elemento.(Ereditato da DataGridViewElement.)

System_CAPS_pubpropertyTag

Ottiene o imposta l'oggetto che contiene i dati da associare alla banda.(Ereditato da DataGridViewBand.)

System_CAPS_pubpropertyToolTipText

Ottiene o imposta il testo usato per la descrizione comandi.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyValueMember

Ottiene o imposta una stringa che specifica la proprietà o la colonna da cui ottenere i valori corrispondenti alle selezioni nell'elenco a discesa.

System_CAPS_pubpropertyValueType

Ottiene o imposta il tipo di dati dei valori delle celle della colonna.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyVisible

Ottiene o imposta un valore che indica se la colonna è visibile.(Ereditato da DataGridViewColumn.)

System_CAPS_pubpropertyWidth

Ottiene o imposta la larghezza corrente della colonna.(Ereditato da DataGridViewColumn.)

NomeDescrizione
System_CAPS_pubmethodClone()

Crea una copia esatta di questa colonna.(Esegue l'override di DataGridViewColumn.Clone().)

System_CAPS_pubmethodDispose()

Rilascia tutte le risorse usate da DataGridViewBand.(Ereditato da DataGridViewBand.)

System_CAPS_protmethodDispose(Boolean)

Rilascia le risorse non gestite usate da DataGridViewBand e, facoltativamente, le risorse gestite.(Ereditato da DataGridViewColumn.)

System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object.)

System_CAPS_protmethodFinalize()

Rilascia le risorse associate alla banda.(Ereditato da DataGridViewBand.)

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetPreferredWidth(DataGridViewAutoSizeColumnMode, Boolean)

Calcola la larghezza ideale della colonna in base ai criteri specificati.(Ereditato da DataGridViewColumn.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.(Ereditato da Object.)

System_CAPS_protmethodOnDataGridViewChanged()

Chiamato quando la banda è associata a un altro DataGridView.(Ereditato da DataGridViewBand.)

System_CAPS_protmethodRaiseCellClick(DataGridViewCellEventArgs)

Genera l'evento DataGridView.CellClick.(Ereditato da DataGridViewElement.)

System_CAPS_protmethodRaiseCellContentClick(DataGridViewCellEventArgs)

Genera l'evento DataGridView.CellContentClick.(Ereditato da DataGridViewElement.)

System_CAPS_protmethodRaiseCellContentDoubleClick(DataGridViewCellEventArgs)
System_CAPS_protmethodRaiseCellValueChanged(DataGridViewCellEventArgs)

Genera l'evento DataGridView.CellValueChanged.(Ereditato da DataGridViewElement.)

System_CAPS_protmethodRaiseDataError(DataGridViewDataErrorEventArgs)

Genera l'evento DataGridView.DataError.(Ereditato da DataGridViewElement.)

System_CAPS_protmethodRaiseMouseWheel(MouseEventArgs)

Genera l'evento Control.MouseWheel.(Ereditato da DataGridViewElement.)

System_CAPS_pubmethodToString()

Ottiene una stringa che descrive la colonna.(Esegue l'override di DataGridViewColumn.ToString().)

NomeDescrizione
System_CAPS_pubeventDisposed

Si verifica quando viene eliminato l'oggetto DataGridViewColumn.(Ereditato da 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.

Note per gli eredi:

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
Disponibile da 2.0

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: