DataGridView.CellValueNeeded Zdarzenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Występuje, gdy VirtualMode właściwość kontrolki DataGridView jest true
i DataGridView wymaga wartości komórki w celu sformatowania i wyświetlenia komórki.
public:
event System::Windows::Forms::DataGridViewCellValueEventHandler ^ CellValueNeeded;
public event System.Windows.Forms.DataGridViewCellValueEventHandler CellValueNeeded;
public event System.Windows.Forms.DataGridViewCellValueEventHandler? CellValueNeeded;
member this.CellValueNeeded : System.Windows.Forms.DataGridViewCellValueEventHandler
Public Custom Event CellValueNeeded As DataGridViewCellValueEventHandler
Typ zdarzenia
Przykłady
Poniższy przykład kodu obsługuje zdarzenie w CellValueNeeded celu wypełnienia komórek dodatnimi liczbami całkowitymi. Ten przykład jest częścią większego przykładu dostępnego w temacie referencyjnym VirtualMode .
#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"
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>();
#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)
Uwagi
To zdarzenie w trybie wirtualnym umożliwia wypełnianie komórek danymi z niestandardowego magazynu danych bez powodowania, że wiersze stają się nieudostępnione. Aby uzyskać więcej informacji na temat udostępniania wierszy, zobacz Best Practices for Scaling the Windows Forms DataGridView Control (Najlepsze rozwiązania dotyczące skalowania kontrolki DataGridView Windows Forms). Aby uzyskać więcej informacji na temat trybu wirtualnego, zobacz Tryb wirtualny w kontrolce DataGridView Windows Forms.
Aby dodać wartości określone przez użytkownika do niestandardowego magazynu danych, obsłuż CellValuePushed zdarzenie.
Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Obsługa i podnoszenie zdarzeń.
Dotyczy
Zobacz też
- VirtualMode
- DataGridViewCellValueEventHandler
- DataGridViewCellValueEventArgs
- CellValuePushed
- OnCellValueNeeded(DataGridViewCellValueEventArgs)
- Najlepsze praktyki dotyczące skalowania formantu DataGridView formularzy systemu Windows
- Tryb wirtualny w formancie DataGridView formularzy systemu Windows
- DataGridView — Formant (Formularze systemu Windows)