2011-07-11 19 views
9

Sayısal verilerin bir kullanıcı tanımlı sütun sayısı (~ 6 - 60 arasında) olan bir DataGridView'ım var. Üst uçta, ızgaradaki veri miktarı bir kerede ekranda görüntülenebilecek olanı aşıyor. Verilerle giden bir grafiğim var. İkisini senkronize etmek isterim, böylece grafikte belirli bir zaman T, ızgarada aynı zamanda dikey olarak sıraya girer.Kaydırma çubuklarını kaldırmak için DataGridView'ı yeniden boyutlandırarak yeniden boyutlandırın

Bunu yapmak için DGV'yi yatay kaydırma çubuğundan kaçınmak için yeterince geniş yapmak istiyorum, grafiğin eşit genişlikte olmasını sağlayın ve sonra da konteynır kontrolu üzerindeki kaydırma işlemini boşaltın. Ancak, kaydırma çubuğunu buradan kaldırmak için DGV'yi ayarlamanız gereken genişliği doğrudan elde etmenin bir yolunu bulamıyorum.

cevap

8

Bir DataGridView öğesinin yatay kaydırma çubuğunu görüntülemesini engellemek için, DGV'nizin genişliğinin, sütunlarının genişliğinden ve satır başlığının genişliğinden daha az olmadığından emin olmanız gerekir. Ayrıca, BorderStyle özelliği None değilse, denetimin genişliğine (ve yüksekliğine) eklenen iki piksel için ayarlamanız gerekir.

/// <summary> 
/// Return the minimum width in pixels a DataGridView can be before the control's vertical scrollbar would be displayed. 
/// </summary> 
private int GetDgvMinWidth(DataGridView dgv) { 
    // Add two pixels for the border for BorderStyles other than None. 
    var controlBorderWidth = (dgv.BorderStyle == BorderStyle.None) ? 0 : 2; 

    // Return the width of all columns plus the row header, and adjusted for the DGV's BorderStyle. 
    return dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) + dgv.RowHeadersWidth + controlBorderWidth; 
} 
+0

dikey kaydırma çubuğu benim durumumda bir sorun değildir, ancak bu o kontrol yüksekliğine karşı vb dikey satır yüksekliği ve yukarı ekleyerek ve kontrol ederek bir alt sınıf daha az acı yapılabilir ki? –

+0

@Dan, Sorunuzu yanlış anladığımı düşünüyorum. DGV'nizin yüksekliğini, hiç bir zaman dikey kaydırma çubuğu göstermeyecek şekilde ayarlamak ister misiniz? –

+0

Oldukça genişliğini ayarlamak istiyorum, bu yüzden hiçbir zaman yatay kaydırma çubuğu göstermiyor. –

3

Bu da sağlanmaktadır alana sığacak şekilde sütunları yeniden boyutlandırmak olacak ve yatay kaydırma çubuğunu kaldırır:

Burada verilen DataGridView için bu minimum değeri dönecektir bir yöntem.

dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 

Bu mümkün olan en küçük genişliği olmak ve hala görülebilir hücreleri üzerinde değerleri tutmaya sütunları yeniden boyutlandırmak olacak ve otomatik olarak sütun sığdırmak için datagridview ayarlanır, ancak biçim değilse yatay kaydırma çubuğu görünebilir yeterince büyük. Bu durumda, formun genişliğini yeniden boyutlandırmanız gerekir.

dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; 
+0

Bu, aynı zamanda, grafiğin yatay ölçeğinin aralığına uyması gerektiğinden kabul edilemez olan değişken genişlik sütunlarına da neden olur. –

İlgili konular