İngilizce dilinde oku

Aracılığıyla paylaş


DataGridViewCellContextMenuStripNeededEventHandler Temsilci

Tanım

bir olayını DataGridViewişleyecek CellContextMenuStripNeeded yöntemi temsil eder.

C#
public delegate void DataGridViewCellContextMenuStripNeededEventHandler(object sender, DataGridViewCellContextMenuStripNeededEventArgs e);
C#
public delegate void DataGridViewCellContextMenuStripNeededEventHandler(object? sender, DataGridViewCellContextMenuStripNeededEventArgs e);

Parametreler

sender
Object

Olayın kaynağı.

Örnekler

Aşağıdaki kod örneği, satırın paylaşımını kaldırmadan bağlam menüsünü ayarlamak için kullanır DataGridViewCellContextMenuStripNeededEventArgs .

C#
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();
}

Açıklamalar

Olay CellContextMenuStripNeeded yalnızca DataGridView denetim DataSource özelliği ayarlandığında veya VirtualMode özelliği olduğunda truegerçekleşir.

Olayı işlediğinizde, kullanıcı bir hücreye CellContextMenuStripNeeded sağ tıkladığında işleyicide belirttiğiniz kısayol menüsü gösterilir. Bu, bir hücrenin geçerli durumu veya değeri tarafından belirlenen kısayol menülerini görüntülemek istediğinizde kullanışlıdır.

Olay CellContextMenuStripNeeded , özelliğin değeri program aracılığıyla veya kullanıcı hücreye DataGridViewCell.ContextMenuStrip sağ tıkladığında da gerçekleşir.

Bir hücrenin ColumnIndex durumunu veya değerini belirlemek için ve RowIndex özelliklerini kullanabilir ve özelliği ayarlamak ContextMenuStrip için bu bilgileri kullanabilirsiniz. Bu özellik, olay değerinin geçersiz kıldığı hücre ContextMenuStrip özelliğinin değeriyle başlatılır.

Birden çok hücre için CellContextMenuStripNeeded hücre ContextMenuStrip değerini ayarlamanın performans cezalarını önlemek için büyük miktarda veriyle çalışırken olayı işleyin. Daha fazla bilgi için bkz. Windows Forms DataGridView Denetimini Ölçeklendirmeye Yönelik En İyi Yöntemler.

Satır özelliğini ayarlayarak ContextMenuStrip veya denetimin RowContextMenuStripNeeded olayını işleyerek DataGridView tek tek hücreler yerine tek tek satırlar için kısayol menüleri de belirtebilirsiniz. Hücre ContextMenuStrip özelliği ayarı satır ContextMenuStrip özelliği ayarını geçersiz kılar ve CellContextMenuStripNeeded olay hem olayı hem de RowContextMenuStripNeeded satır ContextMenuStrip özelliği ayarını geçersiz kılar. Bununla birlikte, satır kısayolu menüsünün geçersiz kılınmasını önlemek için bir hücre kısayol menüsü belirtebilirsiniz null .

Olayları işleme hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.

Bir DataGridViewCellContextMenuStripNeededEventHandler temsilci oluşturduğunuzda, olayı işleyecek yöntemi tanımlarsınız. Olayı olay işleyicinizle ilişkilendirmek için olaya temsilcinin bir örneğini ekleyin. Olay her gerçekleştiğinde, olay işleyici (siz temsilciyi kaldırmadığınız sürece) çağrılır. Olay işleyici temsilcileri hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.

Uzantı Metotları

GetMethodInfo(Delegate)

Belirtilen temsilci tarafından temsil edilen yöntemi temsil eden bir nesnesi alır.

Şunlara uygulanır

Ürün Sürümler
.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

Ayrıca bkz.