DataGridView-Ereignisse


.NET Framework-Klassenbibliothek
DataGridView.CellValueNeeded-Ereignis

Hinweis: Dieses Ereignis ist neu in .NET Framework, Version 2.0.

Tritt ein, wenn die VirtualMode-Eigenschaft des DataGridView-Steuerelements true ist und die DataGridView einen Wert für eine Zelle erfordert, um die Zelle zu formatieren und anzuzeigen.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

Syntax

Visual Basic (Deklaration)
Public Event CellValueNeeded As DataGridViewCellValueEventHandler
Visual Basic (Verwendung)
Dim instance As DataGridView
Dim handler As DataGridViewCellValueEventHandler

AddHandler instance.CellValueNeeded, handler
C#
public event DataGridViewCellValueEventHandler CellValueNeeded
C++
public:
event DataGridViewCellValueEventHandler^ CellValueNeeded {
    void add (DataGridViewCellValueEventHandler^ value);
    void remove (DataGridViewCellValueEventHandler^ value);
}
J#
/** @event */
public void add_CellValueNeeded (DataGridViewCellValueEventHandler value)

/** @event */
public void remove_CellValueNeeded (DataGridViewCellValueEventHandler value)
JScript
JScript unterstützt die Verwendung von Ereignissen, aber nicht die Deklaration von neuen Ereignissen.
Hinweise

Verwenden Sie dieses Ereignis im virtuellen Modus, um Zellen mit Daten aus einem benutzerdefinierten Datenspeicher zu füllen, ohne die Freigabe einer Zeile aufzuheben. Weitere Informationen zum Freigeben von Zeilen finden Sie unter Empfohlene Vorgehensweisen für das Skalieren des DataGridView-Steuerelements in Windows Forms. Weitere Informationen zum virtuellen Modus finden Sie unter Virtueller Modus im DataGridView-Steuerelement in Windows Forms.

Um dem benutzerdefinierten Datenspeicher vom Benutzer angegebene Werte hinzuzufügen, behandeln Sie das CellValuePushed-Ereignis.

Weitere Informationen über die Behandlung von Ereignissen finden Sie unter Behandeln von Ereignissen.

Beispiel

Im folgenden Codebeispiel wird das CellValueNeeded-Ereignis behandelt, um Zellen mit positiven ganzen Zahlen aufzufüllen. Dieses Beispiel ist Teil eines umfangreicheren Beispiels, das im Referenzthema zu VirtualMode verfügbar ist.

Visual Basic
#Region "data store maintance"
    Const initialValue As Integer = -1

    Private Sub dataGridView1_CellValueNeeded(ByVal sender As Object, _
        ByVal e As DataGridViewCellValueEventArgs) _
        Handles dataGridView1.CellValueNeeded

        If store.ContainsKey(e.RowIndex) Then
            ' Use the store if the e value has been modified 
            ' and stored.
            e.Value = store(e.RowIndex)
        ElseIf newRowNeeded AndAlso e.RowIndex = numberOfRows Then
            If dataGridView1.IsCurrentCellInEditMode Then
                e.Value = initialValue
            Else
                ' Show a blank value if the cursor is just resting
                ' on the last row.
                e.Value = String.Empty
            End If
        Else
            e.Value = e.RowIndex
        End If
    End Sub

    Private Sub dataGridView1_CellValuePushed(ByVal sender As Object, _
        ByVal e As DataGridViewCellValueEventArgs) _
        Handles dataGridView1.CellValuePushed

        store.Add(e.RowIndex, CInt(e.Value))

    End Sub
#End Region

    Dim store As System.Collections.Generic.Dictionary(Of Integer, Integer) = _
        New Dictionary(Of Integer, Integer)
C#
#region "data store maintance"
const int initialValue = -1;

private void dataGridView1_CellValueNeeded(object sender,
    DataGridViewCellValueEventArgs e)
{
    if (store.ContainsKey(e.RowIndex))
    {
        // Use the store if the e value has been modified 
        // and stored.            
        e.Value = store[e.RowIndex];
    }
    else if (newRowNeeded && e.RowIndex == numberOfRows)
    {
        if (dataGridView1.IsCurrentCellInEditMode)
        {
            e.Value = initialValue;
        }
        else
        {
            // Show a blank value if the cursor is just resting
            // on the last row.
            e.Value = String.Empty;
        }
    }
    else
    {
        e.Value = e.RowIndex;
    }
}

private void dataGridView1_CellValuePushed(object sender,
    DataGridViewCellValueEventArgs e)
{
    store.Add(e.RowIndex, int.Parse(e.Value.ToString()));
}
#endregion

private Dictionary<int, int> store = new Dictionary<int, int>();
C++
#pragma region Data store maintance

    void VirtualConnector::dataGridView1_CellValueNeeded
        (Object^ sender, DataGridViewCellValueEventArgs^ e)
    {
        if (store->ContainsKey(e->RowIndex))
        {
            // Use the store if the e value has been modified 
            // and stored.            
            e->Value = gcnew Int32(store->default[e->RowIndex]); 
        }
        else if (newRowNeeded && e->RowIndex == numberOfRows)
        {
            if (dataGridView1->IsCurrentCellInEditMode)
            {
                e->Value = initialValue;
            }
            else
            {
                // Show a blank e if the cursor is just loitering
                // over(the) last row.
                e->Value = String::Empty;
            }
        }
        else
        {
            e->Value = e->RowIndex;
        }
    }

    void VirtualConnector::dataGridView1_CellValuePushed
        (Object^ sender, DataGridViewCellValueEventArgs^ e)
    {
        String^ value = e->Value->ToString();
        store[e->RowIndex] = Int32::Parse(value, 
            CultureInfo::CurrentCulture);
    }
#pragma endregion
J#
#region "data store maintance"
private final int INITIALVALUE = -1;

private void dataGridView1_CellValueNeeded(Object sender,
    DataGridViewCellValueEventArgs e)
{
    if (store.ContainsKey(e.get_RowIndex())) {
        // Use the store if the e value has been modified 
        // and stored.            
        e.set_Value((Int32)store.get_Item(e.get_RowIndex()));
    }
    else {
        if (newRowNeeded && e.get_RowIndex() == numberOfRows) {
            if (dataGridView1.get_IsCurrentCellInEditMode()) {
                e.set_Value((Int32)INITIALVALUE);
            }
            else {
                // Show a blank e if the cursor is just loitering
                // over(the)
                // last row.
                e.set_Value("");
            }
        }
        else {
            e.set_Value((Int32)e.get_RowIndex());
        }
    }
} //dataGridView1_CellValueNeeded

private void dataGridView1_CellValuePushed(Object sender,
    DataGridViewCellValueEventArgs e)
{
    store.Add(e.get_RowIndex(), Int32.Parse(e.get_Value().ToString()));
} //dataGridView1_CellValuePushed
#endregion

private Dictionary<int, int> store = new Dictionary<int, int>();
Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0
Siehe auch

Page view tracker