DataGridViewCellContextMenuStripNeededEventArgs Klasa

Definicja

Udostępnia dane dla zdarzenia CellContextMenuStripNeeded.

public class DataGridViewCellContextMenuStripNeededEventArgs : System.Windows.Forms.DataGridViewCellEventArgs
Dziedziczenie
DataGridViewCellContextMenuStripNeededEventArgs

Przykłady

Poniższy przykład kodu używa DataGridViewCellContextMenuStripNeededEventArgs klasy do ustawiania menu skrótów bez udostępniania wiersza.

private ToolStripMenuItem wholeTable = new ToolStripMenuItem();
private ToolStripMenuItem lookUp = new ToolStripMenuItem();
private ContextMenuStrip strip;
private string cellErrorText;

private void dataGridView1_CellContextMenuStripNeeded(object sender,
    DataGridViewCellContextMenuStripNeededEventArgs e)
{
    cellErrorText = String.Empty;

    if (strip == null)
    {
        strip = new ContextMenuStrip();
        lookUp.Text = "Look Up";
        wholeTable.Text = "See Whole Table";
        strip.Items.Add(lookUp);
        strip.Items.Add(wholeTable);
    }
    e.ContextMenuStrip = strip;
}

private void wholeTable_Click(object sender, EventArgs e)
{
    dataGridView1.DataSource = Populate("Select * from employees", true);
}

private DataGridViewCellEventArgs theCellImHoveringOver;

private void dataGridView1_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
{
    theCellImHoveringOver = e;
}

private DataGridViewCellEventArgs cellErrorLocation;

private void lookUp_Click(object sender, EventArgs e)
{
    try
    {
        dataGridView1.DataSource = Populate("Select * from employees where " +
            dataGridView1.Columns[theCellImHoveringOver.ColumnIndex].Name + " = '" +
            dataGridView1.Rows[theCellImHoveringOver.RowIndex].
            Cells[theCellImHoveringOver.ColumnIndex].Value + "'",
            true);
    }
    catch (SqlException)
    {
        cellErrorText = "Can't look this cell up";
        cellErrorLocation = theCellImHoveringOver;
    }
}

private void dataGridView1_CellErrorTextNeeded(object sender,
    DataGridViewCellErrorTextNeededEventArgs e)
{
    if (cellErrorLocation != null)
    {
        if (e.ColumnIndex == cellErrorLocation.ColumnIndex &&
            e.RowIndex == cellErrorLocation.RowIndex)
        {
            e.ErrorText = cellErrorText;
        }
    }
}

private DataTable Populate(string query, bool resetUnsharedCounter)
{
    if (resetUnsharedCounter)
    {
        ResetCounter();
    }

    // Alter the data source as necessary
    SqlDataAdapter adapter = new SqlDataAdapter(query,
        new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;" +
        "Initial Catalog=Northwind;Data Source=localhost"));

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

private Label count = new Label();
private int unsharedRowCounter;

private void ResetCounter()
{
    unsharedRowCounter = 0;
    count.Text = unsharedRowCounter.ToString();
}

Uwagi

Zdarzenie CellContextMenuStripNeeded występuje tylko wtedy, gdy właściwość kontrolki DataGridViewDataSource jest ustawiona lub jej VirtualMode właściwość to true.

Po obsłużeniu CellContextMenuStripNeeded zdarzenia menu skrótów określone w procedurze obsługi jest wyświetlane za każdym razem, gdy użytkownik kliknie komórkę prawym przyciskiem myszy. Jest to przydatne, gdy chcesz wyświetlić menu skrótów określone przez bieżący stan lub wartość komórki.

Zdarzenie CellContextMenuStripNeeded występuje również za każdym razem, gdy zostanie pobrana wartość DataGridViewCell.ContextMenuStrip właściwości, programowo lub gdy użytkownik kliknie prawym przyciskiem myszy komórkę.

Możesz użyć ColumnIndex właściwości i RowIndex , aby określić stan lub wartość komórki i użyć tych informacji do ustawienia ContextMenuStrip właściwości. Ta właściwość jest inicjowana z wartością właściwości komórki ContextMenuStrip , która zastępuje wartość zdarzenia.

Obsługa zdarzenia CellContextMenuStripNeeded podczas pracy z dużymi ilościami danych, aby uniknąć kar za wydajność ustawiania wartości komórki ContextMenuStrip dla wielu komórek. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące skalowania kontrolki Windows Forms DataGridView.

Można również określić menu skrótów dla poszczególnych wierszy, a nie poszczególnych komórek, ustawiając właściwość wiersza ContextMenuStrip lub obsługując DataGridView zdarzenie kontrolki RowContextMenuStripNeeded . Ustawienie właściwości komórki ContextMenuStrip zastępuje ustawienie właściwości wiersza ContextMenuStrip , a CellContextMenuStripNeeded zdarzenie zastępuje RowContextMenuStripNeeded zarówno zdarzenie, jak i ustawienie właściwości wiersza ContextMenuStrip . Można jednak określić null menu skrótów komórek, aby uniemożliwić zastępowanie menu skrótów wierszy.

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Obsługa i podnoszenie zdarzeń.

Konstruktory

Właściwości

ColumnIndex

Pobiera wartość wskazującą indeks kolumn komórki, dla którego występuje zdarzenie.

(Odziedziczone po DataGridViewCellEventArgs)
ContextMenuStrip

Pobiera lub ustawia menu skrótów dla komórki, która wzbudziła CellContextMenuStripNeeded zdarzenie.

RowIndex

Pobiera wartość wskazującą indeks wiersza komórki, dla którego występuje zdarzenie.

(Odziedziczone po DataGridViewCellEventArgs)

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Produkt Wersje
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Zobacz też