2010-06-28 17 views
6

Kontrol dizilerini kullanmak zorunda olduğunun ötesinde, adlandırılmış denetimlerin sınırı 254'tür. Ama öyle görünüyor ki diziler için de sınırlara ulaştık. Bu mutlak sınırın ne olduğu hakkında bir fikrin var mı?VB 6: Tek bir formda kaç tane denetime sahip olabilirim?

+3

Belki de form tasarımınızı tekrar gözden geçirmelisiniz ... – ceejayoz

+2

Amacım tüm uygulamayı değiştirmek, ancak bunu gece boyunca yapamayız. –

+0

Tam sayı, bu soru için önemli değil, biliyorum, ancak sınır, 256 http://msdn.microsoft.com/en-us/library/aa240865(v=VS.60 yerine 254 olduğunu söylüyor. aspx – MarkJ

cevap

7

mutlak sınırı yoktur. Form üzerinde yeterli kontroller yaparsanız, sonunda hafızanız biter. Komut düğmelerini bir kontrol dizisine yükleyen bir test uygulaması yaptım. İlk koşum yaklaşık 6900 düğmede bir "Yetersiz bellek" hatası ile durdu. Birkaç uygulamayı kapattım ve yaklaşık 8200 yükleyebildim. Aynı şeyi metin kutuları ile yaptım ve farklı sonuçlar aldım (yaklaşık 7300 ve 8600 sonrası). Farklı kontroller farklı miktarlarda hafıza tüketir, bu yüzden bir form üzerine koyabileceğiniz tam bir kontrol sayısını belirtmenin bir yolu yoktur.

1

VB6'da yazılmış bir kayıt yönetim sistemimiz var ve her kaydın kendisiyle ilişkilendirilmiş tam bir veri giriş formu olması gerektiğini bildiren bir kullanıcı arayüzü var (yani diğer pencereleri açamıyorum). Bu politikanın bir sonucu olarak, sistemimizdeki daha karmaşık kayıt türlerinden biri şu anda toplam 659 bireysel kontrolün bir formuna sahiptir. 256 adlı kontrol limitine girdik ve daha sonra kontrollerin birçoğunu zaman içinde dizileri kontrol etmek için dönüştürdük. Son olarak, tüm formdan geçtikten ve kalan birkaç kontrolün kontrol dizilerine dönüştürülmesinden sonra, 5 veya 6 yeni kontrol için odayı sıktık.

Bu, kuralları çiğneymek istediğim bir zamandır, ancak bu, çoklu form yaklaşımı kullanmak için biraz geri çekilmeyi gerektirecektir.

Her halükarda, en az 659 denetime bir formda sığabilir, ancak gerçek mutlak sınırın ne olduğunu asla bulamadım (ve istediğimden emin değilim).

+0

Sanırım zor sınırlara geldiğimizde binden fazlaydık, ancak tam sayıyı bulmaya çalışıyorum, böylece iş analistleri bir sonraki versiyondan ne kadar ham petrol çıkarmaları gerektiğini biliyorlar. –

+1

Form şu anda sınıra yakınsa, şu anda formda kaç kontrolün olduğunu söyleyebilmeniz için _Form_Load_ olayına bir kod ekleyebilirsiniz, örneğin, 'MsgBox Me.Controls.Count'. Daha sonra sınıra ulaşana kadar daha fazla denetim yapmayı deneyebilir ve daha sonra programı çalıştırabilir ve mesaj kutusuna hangi numaraya geri döndüğünüzü görebilirsiniz. –

İlgili konular