Evento DataGridView.NewRowNeeded
Aggiornamento: novembre 2007
Si verifica quando la proprietà VirtualMode di DataGridView è true e l'utente si sposta nella nuova riga alla fine di DataGridView.
Assembly: System.Windows.Forms (in System.Windows.Forms.dll)
Quando DataGridView è in modalità virtuale, questo evento consente di creare una nuova voce nell'archivio dati per la nuova riga e di inserire automaticamente i valori predefiniti nella riga.
Per ulteriori informazioni sulla gestione degli eventi, vedere Utilizzo degli eventi.
Nell'esempio di codice riportato di seguito viene utilizzato l'evento NewRowNeeded per rilevare quando viene aggiunta una nuova riga, in modo da consentire alla logica nel gestore eventi CellValueNeeded di inizializzare una cella della nuova riga su un valore iniziale. Questo esempio fa parte di un esempio più esaustivo disponibile nell'argomento relativo alla proprietà VirtualMode.
bool newRowNeeded; private void dataGridView1_NewRowNeeded(object sender, DataGridViewRowEventArgs e) { newRowNeeded = true; } const int initialSize = 5000000; int numberOfRows = initialSize; private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { if (newRowNeeded) { newRowNeeded = false; numberOfRows = numberOfRows + 1; } } #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>();
private boolean newRowNeeded;
private void dataGridView1_NewRowNeeded(Object sender,
DataGridViewRowEventArgs e)
{
newRowNeeded = true;
} //dataGridView1_NewRowNeeded
private final int INITIALSIZE = 5000000;
private int numberOfRows = INITIALSIZE;
private void dataGridView1_RowsAdded(Object sender,
DataGridViewRowsAddedEventArgs e)
{
if (newRowNeeded) {
newRowNeeded = false;
numberOfRows = numberOfRows + 1;
}
} //dataGridView1_RowsAdded
#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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition , Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.