Windows Forms DataGridView Denetimindeki Boyutlandırma Seçenekleri

DataGridView satırlar, sütunlar ve üst bilgiler, birçok farklı oluşumun sonucu olarak boyutu değiştirebilir. Aşağıdaki tabloda bu oluşumlar gösterilmektedir.

Oluşum Tanım
Kullanıcı yeniden boyutlandırma Kullanıcılar satır, sütun veya üst bilgi ayırıcılarını sürükleyerek veya çift tıklatarak boyut ayarlamaları yapabilir.
Denetimi yeniden boyutlandırma Sütun doldurma modunda, denetim genişliği değiştiğinde sütun genişlikleri değişir; örneğin, denetim üst formuna yerleştirildiğinde ve kullanıcı formu yeniden boyutlandırdığında.
Hücre değeri değişikliği İçerik tabanlı otomatik boyutlandırma modlarında boyutlar yeni görüntü değerlerine uyacak şekilde değişir.
Yöntem çağrısı Programlı içerik tabanlı yeniden boyutlandırma, yöntem çağrısı sırasında hücre değerlerine göre fırsatçı boyut ayarlamaları yapmanızı sağlar.
Özellik ayarı Belirli yükseklik ve genişlik değerlerini de ayarlayabilirsiniz.

Varsayılan olarak, kullanıcı yeniden boyutlandırma etkinleştirilir, otomatik boyutlandırma devre dışı bırakılır ve sütunlarından daha geniş hücre değerleri kırpılır.

Aşağıdaki tabloda, varsayılan davranışı ayarlamak veya belirli efektler elde etmek için belirli boyutlandırma seçeneklerini kullanmak için kullanabileceğiniz senaryolar gösterilmektedir.

Senaryo Uygulama
Yatay kaydırma çubuğunu görüntülemeden denetimin tüm genişliğini kaplayan nispeten az sayıda sütunda benzer boyuttaki verileri görüntülemek için sütun doldurma modunu kullanın. AutoSizeColumnsMode özelliğini Fill olarak ayarlayın.
Farklı boyutlardaki görüntüleme değerleriyle sütun doldurma modunu kullanın. AutoSizeColumnsMode özelliğini Fill olarak ayarlayın. Sütun özelliklerini ayarlayarak veya denetimi verilerle doldurduktan sonra denetim AutoResizeColumns yöntemini çağırarak göreli sütun FillWeight genişliklerini başlatın.
Sütun doldurma modunu farklı öneme sahip değerlerle kullanın. AutoSizeColumnsMode özelliğini Fill olarak ayarlayın. Her zaman verilerinin bir kısmını görüntülemesi gereken sütunlar için büyük MinimumWidth değerler ayarlayın veya belirli sütunlar için doldurma modu dışında bir boyutlandırma seçeneği kullanın.
Denetim arka planının görüntülenmesini önlemek için sütun doldurma modunu kullanın. AutoSizeMode Son sütunun özelliğini olarak Fill ayarlayın ve diğer sütunlar için diğer boyutlandırma seçeneklerini kullanın. Diğer sütunlar kullanılabilir alanın çok fazlasını kullanıyorsa, son sütunun özelliğini ayarlayın MinimumWidth .
Simge veya kimlik sütunu gibi sabit genişlikli bir sütun görüntüler. None Sütun için olarak ve Resizable olarak False ayarlayınAutoSizeMode. özelliğini ayarlayarak Width veya denetimi verilerle doldurduktan sonra denetim AutoResizeColumn yöntemini çağırarak genişliğini başlatın.
Kırpmayı önlemek ve alan kullanımını iyileştirmek için hücre içeriği değiştiğinde boyutları otomatik olarak ayarlayın. Otomatik boyutlandırma özelliğini, içerik tabanlı boyutlandırma modunu temsil eden bir değere ayarlayın. Büyük miktarda veriyle çalışırken performans cezasından kaçınmak için yalnızca görüntülenen satırları hesaplayan bir boyutlandırma modu kullanın.
Çok sayıda satırla çalışırken performans cezalarını önlemek için boyutları görüntülenen satırlardaki değerleri sığdıracak şekilde ayarlayın. Otomatik veya programlı yeniden boyutlandırma ile uygun boyutlandırma modu numaralandırma değerlerini kullanın. Kaydırma sırasında yeni görüntülenen satırlardaki değerleri sığdıracak şekilde boyutları ayarlamak için bir olay işleyicisinde Scroll yeniden boyutlandırma yöntemini çağırin. Kullanıcı yeniden boyutlandırmayı, yalnızca görüntülenen satırlardaki değerlerin yeni boyutları belirleyecek şekilde özelleştirmek için bir veya ColumnDividerDoubleClick olay işleyicisinde yeniden RowDividerDoubleClick boyutlandırma yöntemini çağırın.
Performans cezalarını önlemek veya kullanıcının yeniden boyutlandırmasını etkinleştirmek için boyutları yalnızca belirli zamanlarda hücre içeriğine uyacak şekilde ayarlayın. Bir olay işleyicisinde içerik tabanlı yeniden boyutlandırma yöntemini çağırma. Örneğin, bağlamadan DataBindingComplete sonra boyutları başlatmak için olayını kullanın ve ilişkili veri kaynağındaki CellValidated kullanıcı düzenlemelerini veya değişikliklerini telafi etmek üzere boyutları ayarlamak için veya CellValueChanged olayını işleyebilir.
Çok satırlı hücre içeriği için satır yüksekliğini ayarlayın. Sütun genişliklerinin metin paragraflarını görüntülemek için uygun olduğundan emin olun ve yükseklikleri ayarlamak için otomatik veya programlı içerik tabanlı satır boyutlandırmayı kullanın. Ayrıca, çok satırlı içeriğe sahip hücrelerin hücre WrapMode stili değeri kullanılarak görüntülendiğinden Trueemin olun.

Genellikle, sütun genişliklerini korumak veya satır yükseklikleri ayarlanmadan önce bunları belirli genişliklere ayarlamak için otomatik sütun boyutlandırma modunu kullanırsınız.

Fare ile Yeniden Boyutlandırma

Varsayılan olarak, kullanıcılar hücre değerlerine göre otomatik boyutlandırma modu kullanmayan satırları, sütunları ve üst bilgileri yeniden boyutlandırabilir. Kullanıcıların sütun doldurma modu gibi diğer modlarla yeniden boyutlandırmasını önlemek için aşağıdaki DataGridView özelliklerden birini veya birkaçını ayarlayın:

Ayrıca, özelliklerini ayarlayarak kullanıcıların tek tek satırları veya sütunları yeniden boyutlandırmasını Resizable engelleyebilirsiniz. Varsayılan olarak, Resizable özellik değeri sütunların AllowUserToResizeColumns özellik değerini ve satırların AllowUserToResizeRows özellik değerini temel alır. Ancak açıkça veya Falseolarak ayarlarsanız TrueResizable, belirtilen değer denetim değerini bu satır veya sütun için geçersiz kılar. Devralmayı NotSet geri yüklemek için olarak ayarlayınResizable.

Değer devralmayı geri yüklediğinden NotSet , Resizable satır veya sütun denetime NotSet eklenmediği sürece özellik hiçbir zaman değer DataGridView döndürmez. Bir satır veya sütunun özellik değerinin Resizable devralınıp devralınmadığını belirlemeniz gerekiyorsa, özelliğini State inceleyin. State Değer bayrağını ResizableSet içeriyorsa, Resizable özellik değeri devralınmıyordur.

Otomatik Boyutlandırma

Denetimde DataGridView iki tür otomatik boyutlandırma vardır: sütun doldurma modu ve içerik tabanlı otomatik boyutlandırma.

Sütun doldurma modu, denetimdeki görünür sütunların denetimin görüntüleme alanının genişliğini doldurmasına neden olur. Bu mod hakkında daha fazla bilgi için bkz . Windows Forms DataGridView Denetiminde Sütun Doldurma Modu.

Ayrıca, boyutlarını hücre içeriklerine uyacak şekilde otomatik olarak ayarlamak için satırları, sütunları ve üst bilgileri yapılandırabilirsiniz. Bu durumda, hücre içeriği değiştiğinde boyut ayarlaması gerçekleşir.

Dekont

Sanal modu kullanarak özel bir veri önbelleğinde hücre değerlerini korursanız, kullanıcı bir hücre değerini düzenlediğinde otomatik boyutlandırma gerçekleşir, ancak önbelleğe alınmış bir değeri olay CellValuePushed işleyicisi dışında değiştirdiğinizde gerçekleşmez. Bu durumda, hücre görüntüsünü güncelleştirmek ve geçerli otomatik boyutlandırma modlarını uygulamak için denetimi zorlamak için yöntemini çağırın UpdateCellValue .

İçerik tabanlı otomatik boyutlandırma yalnızca bir boyut için (yani satırlar için değil sütunlar için) veya sütunlar için değil de satırlar için etkinleştirilirse ve WrapMode aynı zamanda diğer boyut değiştiğinde boyut ayarlaması da gerçekleşir. Örneğin, satırlar ancak sütunlar otomatik boyutlandırma için yapılandırılmamışsa ve WrapMode etkinleştirilirse, kullanıcılar sütun ayırıcılarını sürükleyerek bir sütunun genişliğini değiştirebilir ve satır yükseklikleri hücre içeriğinin hala tam olarak görüntülenmesi için otomatik olarak ayarlanır.

İçerik tabanlı otomatik boyutlandırma için hem satırları hem de sütunları yapılandırırsanız ve WrapMode etkinleştirilirse, DataGridView hücre içeriği her değiştiğinde denetim boyutları ayarlar ve yeni boyutları hesaplarken ideal bir hücre yüksekliği-genişlik oranı kullanır.

Üst bilgiler ve satırlar ve denetim değerini geçersiz kılmayan sütunlar için boyutlandırma modunu yapılandırmak için aşağıdaki DataGridView özelliklerden birini veya daha fazlasını ayarlayın:

Tek bir sütun için denetimin sütun boyutlandırma modunu geçersiz kılmak için, özelliğini dışında NotSetbir değere ayarlayınAutoSizeMode. Bir sütunun boyutlandırma modu aslında özelliği InheritedAutoSizeMode tarafından belirlenir. Bu özelliğin değeri, değeri olmadığı sürece sütunun AutoSizeMode özellik değerini temel alır. Bu NotSetdurumda denetimin AutoSizeColumnsMode değeri devralınır.

Büyük miktarda veriyle çalışırken içerik tabanlı otomatik yeniden boyutlandırmayı dikkatli kullanın. Performans cezalarını önlemek için, denetimdeki her satırı çözümlemek yerine yalnızca görüntülenen satırları temel alarak boyutları hesaplayan otomatik boyutlandırma modlarını kullanın. En yüksek performans için, yeni veriler yüklendikten hemen sonra belirli zamanlarda yeniden boyutlandırabilmeniz için bunun yerine programlı yeniden boyutlandırmayı kullanın.

İçerik tabanlı otomatik boyutlandırma modları, satır veya sütun özelliğini ya da denetimi RowHeadersVisible veya özellikleri olarak ayarlayarak gizlediğiniz satırları, sütunları Visible veya ColumnHeadersVisible üst bilgileri falseetkilemez. Örneğin, bir sütun büyük bir hücre değerine sığacak şekilde otomatik olarak boyutlandırıldıktan sonra gizlenirse, büyük hücre değerini içeren satır silinirse, gizli sütun boyutunu değiştirmez. Görünürlük değiştiğinde otomatik boyutlandırma gerçekleşmez, bu nedenle sütun Visible özelliğini yeniden true olarak değiştirmek, geçerli içeriğine göre boyutunu yeniden hesaplamaya zorlamaz.

Programlı içerik tabanlı yeniden boyutlandırma, görünürlüklerinden bağımsız olarak satırları, sütunları ve üst bilgileri etkiler.

Program Aracılığıyla Yeniden Boyutlandırma

Otomatik boyutlandırma devre dışı bırakıldığında, aşağıdaki özellikler aracılığıyla satırların, sütunların veya üst bilgilerin tam genişliğini veya yüksekliğini program aracılığıyla ayarlayabilirsiniz:

Ayrıca aşağıdaki yöntemleri kullanarak satırları, sütunları ve üst bilgileri içeriklerine uyacak şekilde program aracılığıyla yeniden boyutlandırabilirsiniz:

Bu yöntemler satırları, sütunları veya üst bilgileri sürekli yeniden boyutlandırma için yapılandırmak yerine bir kez yeniden boyutlandıracaktır. Yeni boyutlar, kırpma olmadan tüm hücre içeriğini görüntülemek için otomatik olarak hesaplanır. Ancak özellik değerlerine Fillsahip InheritedAutoSizeMode sütunları program aracılığıyla yeniden boyutlandırdığınızda, hesaplanmış içerik tabanlı genişlikler sütun FillWeight özellik değerlerini orantılı olarak ayarlamak için kullanılır ve aslında sütun genişlikleri bu yeni oranlara göre hesaplanır ve böylece tüm sütunlar denetimin kullanılabilir görüntüleme alanını doldurur.

Program aracılığıyla yeniden boyutlandırma, sürekli yeniden boyutlandırma ile performans cezalarını önlemek için kullanışlıdır. Ayrıca, kullanıcı tarafından yeniden boyutlandırılabilir satırlar, sütunlar ve üst bilgiler için ve sütun doldurma modu için başlangıç boyutları sağlamak da yararlıdır.

Genellikle belirli zamanlarda program aracılığıyla yeniden boyutlandırma yöntemlerini çağırırsınız. Örneğin, verileri yükledikten hemen sonra tüm sütunları program aracılığıyla yeniden boyutlandırabilir veya belirli bir hücre değeri değiştirildikten sonra belirli bir satırı program aracılığıyla yeniden boyutlandırabilirsiniz.

İçerik Tabanlı Boyutlandırma Davranışını Özelleştirme

Türetilmiş DataGridView hücre, satır ve sütun türleriyle çalışırken, , DataGridViewRow.GetPreferredHeightveya yöntemlerini geçersiz kılarak DataGridViewCell.GetPreferredSizeveya DataGridViewColumn.GetPreferredWidth türetilmiş DataGridView bir denetimde korumalı yeniden boyutlandırma yöntemi aşırı yüklemelerini çağırarak boyutlandırma davranışlarını özelleştirebilirsiniz. Korumalı yeniden boyutlandırma yöntemi aşırı yüklemeleri, ideal bir hücre yükseklik-genişlik oranı elde etmek için çiftler halinde çalışacak şekilde tasarlanmıştır ve fazla geniş veya uzun hücrelerden kaçınılır. Örneğin, yönteminin AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) aşırı yüklemesini AutoResizeRows çağırır ve parametresi için Boolean değerini false geçirirseniz, aşırı yükleme satırdaki hücreler için ideal yükseklikleri ve genişlikleri hesaplar, ancak yalnızca satır yüksekliklerini ayarlar. Daha sonra sütun genişliklerini hesaplanan ideale ayarlamak için yöntemini çağırmanız AutoResizeColumns gerekir.

İçerik Tabanlı Boyutlandırma Seçenekleri

Boyutlandırma özellikleri ve yöntemleri tarafından kullanılan numaralandırmalar, içerik tabanlı boyutlandırma için benzer değerlere sahiptir. Bu değerlerle, tercih edilen boyutları hesaplamak için hangi hücrelerin kullanılacağını sınırlayabilirsiniz. Tüm boyutlandırma numaralandırmaları için, görüntülenen hücrelere başvuran adlara sahip değerler, hesaplamalarını görüntülenen satırlardaki hücrelerle sınırlar. Satırları dışlamak, çok miktarda satırla çalışırken performans cezasından kaçınmak için yararlıdır. Ayrıca, hesaplamaları üst bilgi veya başsız hücrelerdeki hücre değerleriyle kısıtlayabilirsiniz.

Ayrıca bkz.