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.

Olay Açıklama
Kullanıcının boyutunu yeniden ayarlama 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 Fillolarak ayarlayın.
Farklı boyutlardaki görüntüleme değerleriyle sütun doldurma modunu kullanın. AutoSizeColumnsMode özelliğini Fillolarak ayarlayın. Sütun FillWeight özelliklerini ayarlayarak veya denetimi verilerle doldurduktan sonra denetim AutoResizeColumns yöntemini çağırarak göreli sütun genişliklerini başlatın.
Sütun doldurma modunu çeşitli öneme sahip değerlerle kullanın. AutoSizeColumnsMode özelliğini Fillolarak ayarlayın. Her zaman verilerinin bir kısmını görüntülemesi gereken sütunlar için büyük MinimumWidth değerleri 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. Son sütunun AutoSizeMode özelliğini Fill olarak 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 MinimumWidth özelliğini ayarlayın.
Simge veya kimlik sütunu gibi sabit genişlikli bir sütun görüntüler. AutoSizeModeNone olarak ve Resizable'yi False olarak sütun için ayarlayın. Width özelliğini ayarlayarak 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 programatik yeniden boyutlandırmada 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, Scroll bir olay işleyicisinde yeniden boyutlandırma yöntemini çağırin. Kullanıcı çift tıklama ile yeniden boyutlandırmayı, yalnızca görüntülenen satırlardaki değerlerin yeni boyutları belirlemesini sağlayacak şekilde özelleştirmek için, bir RowDividerDoubleClick veya ColumnDividerDoubleClick olay işleyicisinde yeniden 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 sonra boyutları başlatmak için DataBindingComplete olayını kullanın ve CellValidated veya CellValueChanged olayını işleyerek ilişkili veri kaynağındaki kullanıcı düzenlemelerini veya değişikliklerini telafi edecek boyutları ayarlayın.
Ç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 WrapMode hücre stili değeri Truekullanılarak görüntülendiğinden emin 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 özelliklerinden birini veya birkaçını ayarlayın:

Ayrıca, Resizable özelliklerini ayarlayarak kullanıcıların tek tek satırları veya sütunları yeniden boyutlandırmasını 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, Resizable açıkça True veya Falseolarak ayarlarsanız, belirtilen değer denetim değerini bu satır veya sütun için geçersiz kılar. Devralmayı geri yüklemek için ResizableNotSet olarak ayarlayın.

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

Otomatik Boyutlandırma

DataGridView denetiminde 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 Denetimi'ndeki 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.

Uyarı

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 CellValuePushed olay işleyicisi dışında değiştirdiğinizde gerçekleşmez. Bu durumda, denetimi hücre görüntüsünü güncelleştirmeye ve geçerli otomatik boyutlandırma modlarını uygulamaya zorlamak için UpdateCellValue yöntemini çağırın.

İç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 de etkinleştirilirse, boyut ayarlaması diğer boyut her değiştiğinde de gerçekleşir. Örneğin, sadece satırların otomatik boyutlandırma için yapılandırıldığı ve sütunların bu kapsamda olmadığı bir durumda, WrapMode etkinleştirildiyse, kullanıcılar sütunun genişliğini değiştirmek için sütun ayırıcılarını sürükleyebilir ve buna bağlı olarak, hücre içeriğinin hala tam olarak görüntülenebilmesi için satır yükseklikleri otomatik olarak ayarlanacaktı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 denetimi her hücre içeriği değiştiğinde boyutları ayarlar ve yeni boyutları hesaplarken ideal bir hücre yükseklik-genişlik oranı kullanır.

Başlıklar ve satırlar ile denetim değerini geçersiz kılmayan sütunlar için boyutlandırma modunu yapılandırmak amacıyla, aşağıdaki DataGridView özelliklerinden bir veya birkaçını ayarlayın:

Tek bir sütun için denetimin sütun boyutlandırma modunu geçersiz kılmak için, AutoSizeMode özelliğini NotSetdışında bir değer olarak ayarlayın. Bir sütunun boyutlandırma modu aslında InheritedAutoSizeMode özelliği tarafından belirlenir. Bu özelliğin değeri, bu değer AutoSizeModeolmadığı sürece sütunun NotSet özellik değerini temel alır ve bu durumda 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 Visible özelliğini veya denetim RowHeadersVisible ya da ColumnHeadersVisible özelliklerini falseolarak ayarlayarak gizlediğiniz satırları, sütunları veya üst bilgileri etkilemez. Ö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, sadece bir kez yeniden boyutlandırır. Yeni boyutlar, kırpma olmadan tüm hücre içeriğini görüntülemek için otomatik olarak hesaplanır. Ancak, InheritedAutoSizeModeFill özellik değerlerine sahip 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ırmanın yol açtığı performans kayıpları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, DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeightveya DataGridViewColumn.GetPreferredWidth yöntemlerini geçersiz kılarak veya türetilmiş bir DataGridView denetiminde korumalı yeniden boyutlandırma yöntemi aşırı yüklemelerini çağırarak boyutlandırma davranışlarını özelleştirebilirsiniz. Korumalı yeniden boyutlandırma yönteminin aşırı yüklemeleri, ideal bir hücre yükseklik-genişlik oranı elde etmek ve aşırı geniş veya uzun hücrelerden kaçınmak için çiftler halinde çalışacak şekilde tasarlanmıştır. Örneğin, AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) yönteminin AutoResizeRows aşırı yüklemesini çağırır ve false parametresi için Boolean değerini 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üksekliğini ayarlar. Daha sonra sütun genişliklerini hesaplanan ideale ayarlamak için AutoResizeColumns yöntemini çağırmanız 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. Çok miktarda satırla çalışırken performans kaybından kaçınmak için satırları hariç tutmak yararlıdır. Ayrıca, hesaplamaları başlık içeren veya başlık içermeyen hücrelerdeki hücre değerleriyle kısıtlayabilirsiniz.

Ayrıca bakınız