2011-08-04 6 views
5

Daha geniş dizeleri içerebilen bir liste kutum var. Şu anda yeniden boyutlandırma kodu yazmak için çok tembelim, bu yüzden liste kutusuna sığmayacak kadar büyükse tüm öğeyi gösteren araç ipuçlarını görüntülüyorum.Bir Liste Kutusunda, kaydırma çubuğunun kapladığı alanın dışındaki liste kutusunun genişliğini nasıl alabilirim?

Şu anda, Width özelliğini kullanarak genişliği alıyorum ve MeasureText dizesiyle ve argümanlar olarak yazı tipiyle karşılaştırıyorum.

Bu, çoğu zaman iyi çalışır, ancak öğenin kaydırma çubuğu olmaksızın liste kutusuna sığması durumunda işe yaramaz, ancak kaydırma çubuğuyla bir daha ince liste kutusunu sığmaz. Yani

, nasıl öğrenebilirim:

  1. bir liste ben 2 sanırım

eğer çözülmüş olur kaydırma içermeyen bir kaydırma çubuğu

  • liste genişliği görüntülüyor eğer kaydırma çubuğu, hangi sürümün çalışmakta olduğuna bağlı olarak hangi pencere sürümüne veya ekran yapılandırmasına bakılmaksızın aynı piksel genişliğini alır. Bunun doğru olup olmadığını bilen var mı?

  • cevap

    5

    Denetim tarafından kullanılan iç alanı elde etmek için ListBox.ClientRectangle.Width öğesini kullanabilirsiniz.

    ScrollBar görünürse, döndürülen genişlik değeri ScrollBar genişliğindeki iç genişlik olur, dolayısıyla buna karşı önlem almanız güvenlidir.