Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
DataGridView.VirtualMode-Eigenschaft
Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob für das DataGridView-Steuerelement eigene Operationen zur Datenverwaltung bereitgestellt wurden.
Assembly: System.Windows.Forms (in System.Windows.Forms.dll)
Eigenschaftswert
Typ: System.Booleantrue, wenn die DataGridView Datenverwaltungsvorgänge verwendet, die Sie bereitstellen, andernfalls false. Die Standardeinstellung ist false.
Der virtuelle Modus ist für sehr große Datenspeicher ausgelegt. Wenn die VirtualMode-Eigenschaft true ist, erstellen Sie eine DataGridView mit einer festgelegten Anzahl von Zeilen und Spalten, und behandeln Sie anschließend das CellValueNeeded-Ereignis, um die Zellen zu füllen. Der virtuelle Modus erfordert die Implementierung eines zugrunde liegenden Datenspeichers, um das Füllen, Bearbeiten und Löschen von DataGridView-Zellen auf Grundlage der Benutzeraktionen zu behandeln. Weitere Informationen zum Implementieren des virtuellen Modus finden Sie unter Gewusst wie: Implementieren des virtuellen Modus im DataGridView-Steuerelement in Windows Forms.
Sie müssen den virtuellen Modus verwenden, um die Werte ungebundener Spalten beizubehalten, wenn sich das DataGridView-Steuerelement im gebundenen Modus befindet. Das Sortieren nach ungebundenen Spalten im Gebunden-Modus wird nicht unterstützt.
Im folgenden Codebeispiel wird im Code im virtuellen Modus eine Tabelle mit positiven ganzen Zahlen erstellt.
using System.IO; using System.Collections.Generic; using System.Windows.Forms; using System.Drawing; using System; public class VirtualModeDemo : Form { DataGridView dataGridView1 = new DataGridView(); public VirtualModeDemo() : base() { Text = "DataGridView virtual-mode demo (cell-level commit scope)"; dataGridView1.NewRowNeeded += new DataGridViewRowEventHandler(dataGridView1_NewRowNeeded); dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(dataGridView1_RowsAdded); dataGridView1.CellValidating += new DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating); dataGridView1.CellValueNeeded += new DataGridViewCellValueEventHandler(dataGridView1_CellValueNeeded); dataGridView1.CellValuePushed += new DataGridViewCellValueEventHandler(dataGridView1_CellValuePushed); Controls.Add(dataGridView1); dataGridView1.VirtualMode = true; dataGridView1.AllowUserToDeleteRows = false; dataGridView1.Columns.Add("Numbers", "Positive Numbers"); dataGridView1.Rows.AddCopies(0, initialSize); } 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 void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { dataGridView1.Rows[e.RowIndex].ErrorText = ""; int newInteger; // Don't try to validate the 'new row' until finished // editing since there // is not any point in validating its initial value. if (dataGridView1.Rows[e.RowIndex].IsNewRow) { return; } if (!int.TryParse(e.FormattedValue.ToString(), out newInteger) || newInteger < 0) { e.Cancel = true; dataGridView1.Rows[e.RowIndex].ErrorText = "the value must be a non-negative integer"; } } [STAThreadAttribute()] public static void Main() { Application.Run(new VirtualModeDemo()); } }
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.