Windows Forms DataGridView Denetiminde Sanal Mod

Sanal mod ile denetim ile özel veri önbelleği DataGridView arasındaki etkileşimi yönetebilirsiniz. Sanal modu uygulamak için özelliğini olarak VirtualMode ayarlayın ve bu konuda açıklanan true olaylardan birini veya daha fazlasını işlenin. Genellikle denetim veri önbelleğinde CellValueNeeded değerlere bakma özelliğine olanak sağlayan olayı en azından siz işlersiniz.

Bağlı Mod ve Sanal Mod

Sanal mod yalnızca bağlı modu tamamlar veya değiştirirken gereklidir. Bağlı modda, özelliğini ayarlarsınız ve denetim belirtilen kaynaktan verileri otomatik olarak DataSource yükler ve kullanıcı değişikliklerini buna geri yükler. Bağlı sütunlardan hangilerinin görüntülendiğinden ve veri kaynağının kendisi genellikle sıralama gibi işlemleri işlemektedir.

Sınır Modunun Tamamlayıcısı

Bağlı sütunlarla birlikte sınırsız sütunları görüntüleyerek sınır modunu tamamlayabilirsiniz. Bu bazen "karma mod" olarak da adlandırılan bu özellik, hesaplanan değerler veya kullanıcı arabirimi (UI) denetimleri gibi öğeleri görüntülemek için kullanışlıdır.

Sınırsız sütunlar veri kaynağının dışında olduğundan, veri kaynağının sıralama işlemleri tarafından yoksayılır. Bu nedenle, karışık modda sıralamayı etkinleştirerek, yerel önbellekte sınırsız verileri yönetmeniz ve denetimin etkileşim kurmasına izin verecek sanal DataGridView modu uygulamalısınız.

Bağlantısız sütunlarda değerleri korumak için sanal modu kullanma hakkında daha fazla bilgi için özellik ve sınıf DataGridViewCheckBoxColumn.ThreeState başvurusu konu System.Windows.Forms.DataGridViewComboBoxColumn başlıklarına bakın.

Sınır Modunu Değiştirme

Bağlı mod performans ihtiyaçlarınızı karşılayamasa, sanal mod olay işleyicileri aracılığıyla özel bir önbellekte tüm verilerinizi yönetebilirsiniz. Örneğin, en iyi performans için gerekli olduğu kadar ağa bağlı bir veritabanından yalnızca çok veri alan bir tam zamanında veri yükleme mekanizması uygulamak için sanal modu kullanabilirsiniz. Bu senaryo özellikle yavaş bir ağ bağlantısı üzerinden veya sınırlı miktarda RAM veya depolama alanına sahip istemci makineleriyle büyük miktarlarda veriyle çalışırken yararlıdır.

Tam zamanında bir senaryoda sanal modu kullanma hakkında daha fazla bilgi için bkz. Windows Forms DataGridView DenetimindeTam Zamanında Veri Yükleme ile Sanal Modu Uygulama.

Virtual-Mode Olayları

Verileriniz salt okunursa, CellValueNeeded işlemeniz gereken tek olay olay olabilir. Ek sanal mod olayları kullanıcı düzenlemeleri, satır ekleme ve silme ve satır düzeyi işlemler gibi belirli işlevleri etkinleştirmenizi sağlar.

Bazı standart olaylar (örneğin, kullanıcılar satır eklensin veya silsin ya da hücre değerleri düzenlenemez, ayrıştırıldı, doğrulandı veya biçimlendirildi) sanal modda da DataGridView yararlıdır. Araç İpucu metni, hücre ve satır hata metni, hücre ve satır kısayolu menü verileri ve satır yüksekliği verileri gibi normalde bağlı bir veri kaynağında depolanmayacak değerleri korumanız için olaylar da işebilirsiniz.

Okuma/yazma verilerini satır düzeyi işleme kapsamıyla yönetmek için sanal modu uygulama hakkında daha fazla bilgi için bkz. Adım adım: Windows Forms DataGridView DenetimindeSanal Modu Uygulama.

Hücre düzeyinde işleme kapsamı ile sanal mod uygulayan bir örnek için özellik başvurusu VirtualMode konu başlığına bakın.

Aşağıdaki olaylar yalnızca özelliği VirtualMode olarak ayarlanırsa true gerçekleşir.

Olay Açıklama
CellValueNeeded Denetim tarafından, görüntü için veri önbelleğinden bir hücre değeri almak için kullanılır. Bu olay yalnızca sınırsız sütunlarda yer alan hücreler için gerçekleşir.
CellValuePushed Denetim tarafından, bir hücre için kullanıcı girişini veri önbelleğine işlemek için kullanılır. Bu olay yalnızca sınırsız sütunlarda yer alan hücreler için gerçekleşir.

Geçerli değerin denetimde görüntülendiğinden emin olmak ve geçerli durumdaki tüm otomatik boyutlandırma modlarını uygulamak için önbelleğe alınmış bir değeri olay işleyicisi dışında değiştirirken UpdateCellValue CellValuePushed yöntemini çağırma.
NewRowNeeded Denetim tarafından veri önbelleğinde yeni bir satıra ihtiyaç olduğunu belirtmek için kullanılır.
RowDirtyStateNeeded Denetim tarafından, bir satırın herhangi bir işlanmamış değişiklik olup olmadığını belirlemek için kullanılır.
CancelRowEdit Denetim tarafından, bir satırın önbelleğe alınmış değerlerine dönmesi gerektiğini belirtmek için kullanılır.

Aşağıdaki olaylar sanal modda yararlıdır, ancak özellik ayarına bakılmaksızın VirtualMode kullanılabilir.

Ekinlikler Açıklama
UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded
Denetimin, satırların silindiğinde veya ekleniyorsa bunu belirterek veri önbelleğini uygun şekilde güncelleştirmesini sağlar.
CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated
Denetim tarafından, görüntüleme ve kullanıcı girişini ayrıştırmak ve doğrulamak için hücre değerlerini biçimlendirmek için kullanılır.
CellToolTipTextNeeded Denetim tarafından, özellik ayarlanırken veya özelliği olduğunda ToolTip DataSource hücresi metnini almak VirtualMode için true kullanılır.

Hücre Araç İpucu yalnızca özellik değeri ShowCellToolTips olduğunda true görüntülenir.
CellErrorTextNeeded

RowErrorTextNeeded
Denetim tarafından, özellik ayarlanırken veya özelliği olduğunda hücre veya DataSource satır hata metnini almak için VirtualMode true kullanılır.

Geçerli UpdateCellErrorText değerin denetimde görüntülendiğinden emin olmak için hücre veya satır hata metnini UpdateRowErrorText değiştirirken yöntemini veya yöntemini çağırma.

ve özellik değerleri olduğunda hücre ve satır hatası ShowCellErrors ShowRowErrors ifadeleri true görüntülenir.
CellContextMenuStripNeeded

RowContextMenuStripNeeded
Denetim özelliği ayarlanırken veya özelliği olduğunda bir hücreyi veya ContextMenuStrip satırı almak için denetim tarafından DataSource VirtualMode true kullanılır.
RowHeightInfoNeeded

RowHeightInfoPushed
Denetim tarafından satır yüksekliği bilgilerini veri önbelleğinde almak veya depolamak için kullanılır. Geçerli değerin denetimin görüntüsünde olduğundan emin olmak için önbelleğe alınmış satır yüksekliği bilgilerini olay işleyicisi dışında UpdateRowHeightInfo RowHeightInfoPushed değiştirirken yöntemini çağırma.

Sanal Modda En İyi Yöntemler

Büyük miktarlarda verilerle verimli bir şekilde çalışmak için sanal modu uygulayıyorsanız, denetimin kendisiyle verimli bir şekilde çalışmadan da emin DataGridView olmak gerekir. Hücre stillerinin, otomatik boyutlandırmanın, seçimlerin ve satır paylaşımının verimli kullanımı hakkında daha fazla bilgi için bkz. Windows Forms DataGridView Denetimi'ne Ölçeklendirmeye YönelikEn İyi Yöntemler.

Ayrıca bkz.