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)
Visual Basic (Deklaration)
Public Event CellValueNeeded As DataGridViewCellValueEventHandler
Visual Basic (Verwendung)
Dim instance As DataGridView
Dim handler As DataGridViewCellValueEventHandler
AddHandler instance.CellValueNeeded, handler
public event DataGridViewCellValueEventHandler CellValueNeeded
public:
event DataGridViewCellValueEventHandler^ CellValueNeeded {
void add (DataGridViewCellValueEventHandler^ value);
void remove (DataGridViewCellValueEventHandler^ value);
}
/** @event */
public void add_CellValueNeeded (DataGridViewCellValueEventHandler value)
/** @event */
public void remove_CellValueNeeded (DataGridViewCellValueEventHandler value)
JScript unterstützt die Verwendung von Ereignissen, aber nicht die Deklaration von neuen Ereignissen.
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.
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.
#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)
#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>();
#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
#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>();
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.
.NET Framework
Unterstützt in: 2.0