Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W trybie wirtualnym można zarządzać interakcją między kontrolką DataGridView a niestandardową pamięcią podręczną danych. Aby zaimplementować tryb wirtualny, ustaw VirtualMode właściwość na true i obsłuż co najmniej jedno zdarzenie opisane w tym temacie. Zazwyczaj obsługujesz co najmniej CellValueNeeded zdarzenie, co umożliwia kontrolce wyszukiwanie wartości w pamięci podręcznej danych.
Tryb powiązany i tryb wirtualny
Tryb wirtualny jest niezbędny tylko wtedy, gdy trzeba uzupełnić lub zastąpić tryb powiązany. W trybie skojarzonym, ustawiasz właściwość DataSource, a kontrolka automatycznie ładuje dane z określonego źródła i przesyła zmiany użytkownika z powrotem do tego źródła. Możesz kontrolować, które kolumny powiązane są wyświetlane, a samo źródło danych zwykle obsługuje operacje, takie jak sortowanie.
Tryb ograniczenia uzupełniającego
Tryb powiązania można uzupełnić, wyświetlając kolumny niezwiązane razem z kolumnami powiązanymi. Jest to czasami nazywane "trybem mieszanym" i jest przydatne do wyświetlania elementów, takich jak wartości obliczeniowe lub kontrolki interfejsu użytkownika.
Ponieważ niezwiązane kolumny znajdują się poza źródłem danych, są ignorowane przez operacje sortowania źródła danych. W związku z tym po włączeniu sortowania w trybie mieszanym należy zarządzać danymi niezwiązanymi w lokalnej pamięci podręcznej i zaimplementować tryb wirtualny, aby umożliwić kontrolce DataGridView interakcję z nim.
Aby uzyskać więcej informacji na temat używania trybu wirtualnego do utrzymania wartości w niezwiązanych kolumnach, zobacz przykłady w tematach referencyjnych dotyczących właściwości DataGridViewCheckBoxColumn.ThreeState i klasy System.Windows.Forms.DataGridViewComboBoxColumn.
Zastępowanie trybu ograniczenia
Jeśli tryb powiązany nie spełnia wymagań dotyczących wydajności, możesz zarządzać wszystkimi danymi w niestandardowej pamięci podręcznej za pomocą procedur obsługi zdarzeń w trybie wirtualnym. Na przykład można użyć trybu wirtualnego, aby zaimplementować mechanizm ładowania danych just in time, który pobiera tylko tyle danych z sieciowej bazy danych, co jest niezbędne do optymalnej wydajności. Ten scenariusz jest szczególnie przydatny podczas pracy z dużą ilością danych za pośrednictwem powolnego połączenia sieciowego lub z maszynami klienckimi, które mają ograniczoną ilość pamięci RAM lub miejsca do magazynowania.
Aby uzyskać więcej informacji na temat korzystania z trybu wirtualnego w scenariuszu just in time, zobacz Implementowanie trybu wirtualnego za pomocą funkcji Just-In-Time Ładowanie danych w kontrolce DataGridView formularzy systemu Windows.
Virtual-Mode zdarzenia
Jeśli dane są tylko do odczytu, zdarzenie CellValueNeeded może być jedynym zdarzeniem, które należy obsłużyć. Dodatkowe zdarzenia trybu wirtualnego umożliwiają włączenie określonych funkcji, takich jak edytowanie użytkowników, dodawanie i usuwanie wierszy oraz transakcje na poziomie wiersza.
Niektóre standardowe DataGridView zdarzenia (takie jak zdarzenia, które występują, gdy użytkownicy dodawają lub usuwają wiersze lub kiedy wartości komórek są edytowane, analizowane, weryfikowane lub sformatowane) są również przydatne w trybie wirtualnym. Można również obsługiwać zdarzenia, które umożliwiają zachowanie wartości, które zazwyczaj nie są przechowywane w powiązanym źródle danych, takich jak tekst podpowiedzi komórki, tekst błędu komórki i wiersza, dane menu skrótów komórki i wiersza oraz dane wysokości wiersza.
Aby uzyskać więcej informacji na temat implementowania trybu wirtualnego do zarządzania danymi odczytu/zapisu za pomocą zakresu zatwierdzania na poziomie wiersza, zobacz Przewodnik: implementowanie trybu wirtualnego w kontrolce DataGridView formularzy systemu Windows.
Aby zapoznać się z przykładem implementowania trybu wirtualnego z zakresem zatwierdzania na poziomie komórki, zajrzyj do tematu odwołania do właściwości VirtualMode.
Następujące zdarzenia występują tylko wtedy, gdy właściwość VirtualMode jest ustawiona na true.
| Zdarzenie | Opis |
|---|---|
| CellValueNeeded | Używany przez kontrolkę do pobierania wartości komórki z pamięci podręcznej danych do wyświetlenia. To zdarzenie występuje tylko w przypadku komórek w niezwiązanych kolumnach. |
| CellValuePushed | Używany przez kontrolkę do zatwierdzania danych wejściowych użytkownika dla komórki w pamięci podręcznej danych. To zdarzenie występuje tylko w przypadku komórek w niezwiązanych kolumnach. Wywołaj metodę UpdateCellValue podczas zmieniania buforowanej wartości poza obsługiwaczem zdarzeń CellValuePushed, aby upewnić się, że bieżąca wartość jest wyświetlana w kontrolce oraz aby zastosować wszelkie automatyczne tryby rozmiaru, które są aktualnie w użyciu. |
| NewRowNeeded | Używany przez kontrolkę do wskazywania potrzeby nowego wiersza w pamięci podręcznej danych. |
| RowDirtyStateNeeded | Używane przez kontrolkę do określenia, czy wiersz zawiera jakiekolwiek niezatwierdzone zmiany. |
| CancelRowEdit | Używany przez kontrolkę, aby wskazać, że wiersz powinien powrócić do buforowanych wartości. |
Następujące zdarzenia są przydatne w trybie wirtualnym, ale mogą być używane niezależnie od VirtualMode ustawienia właściwości.
| Zdarzenia | Opis |
|---|---|
| UserDeletingRow UserDeletedRow RowsRemoved RowsAdded |
Używany przez kontrolkę do wskazywania, kiedy wiersze są usuwane lub dodawane, co pozwala odpowiednio zaktualizować pamięć podręczną danych. |
| CellFormatting CellParsing CellValidating CellValidated RowValidating RowValidated |
Używany przez kontrolkę do formatowania wartości komórek do wyświetlania i analizowania i weryfikowania danych wejściowych użytkownika. |
| CellToolTipTextNeeded | Używany przez kontrolkę do pobierania tekstu podpowiedzi komórki, gdy właściwość DataSource jest ustawiona lub właściwość VirtualMode to true.Wskazówki narzędziowe dla komórek są wyświetlane tylko wtedy, gdy wartość właściwości ShowCellToolTips to true. |
| CellErrorTextNeeded RowErrorTextNeeded |
Używany przez kontrolkę do pobierania tekstu błędu komórki lub wiersza, gdy właściwość DataSource jest ustawiona lub właściwość VirtualMode to true.Wywołaj metodę UpdateCellErrorText lub metodę UpdateRowErrorText podczas zmiany tekstu błędu komórki lub wiersza, aby upewnić się, że bieżąca wartość jest wyświetlana w kontrolce. Symbole błędów komórek i wierszy są wyświetlane, gdy wartości właściwości ShowCellErrors i ShowRowErrors są true. |
| CellContextMenuStripNeeded RowContextMenuStripNeeded |
Używana przez kontrolkę do pobierania danych z komórki lub wiersza ContextMenuStrip, gdy właściwość DataSource kontrolki jest ustawiona na VirtualMode lub właściwość true. |
| RowHeightInfoNeeded RowHeightInfoPushed |
Używany przez element sterujący do pobierania lub przechowywania informacji o wysokości wiersza w pamięci podręcznej danych. Wywołaj metodę UpdateRowHeightInfo podczas zmiany buforowanych informacji o wysokości wiersza poza procedurą obsługi zdarzeń RowHeightInfoPushed, aby upewnić się, że bieżąca wartość jest używana w wyświetlaniu komponentu sterującego. |
Najlepsze rozwiązania w trybie wirtualnym
Jeśli wdrażasz tryb wirtualny w celu wydajnej pracy z dużą ilością danych, warto również upewnić się, że pracujesz wydajnie z samą kontrolką DataGridView . Aby uzyskać więcej informacji na temat wydajnego używania stylów komórek, automatycznego określania rozmiaru, zaznaczeń i współdzielenia wierszy, zobacz Najlepsze praktyki dotyczące skalowania kontrolki DataGridView formularzy Windows Forms.
Zobacz także
- DataGridView
- VirtualMode
- Optimizacja wydajności w kontrolce formularzy systemu Windows DataGridView
- najlepsze rozwiązania dotyczące skalowania kontrolki DataGridView formularzy systemu Windows
- Krok po kroku : Implementacja trybu wirtualnego w kontrolce DataGridView Windows Forms
- implementowanie trybu wirtualnego za pomocą funkcji Just-In-Time Data Loading w kontrolce DataGridView formularzy systemu Windows
.NET Desktop feedback