2010-11-18 29 views
2

VB.NET'te bir uygulama yazıyorum ve aşağıdaki sorunla karşılaşıyorum. Kullanıcının bir süreliğine ve haftanın günlerinin verildiği zaman uygunluğunu seçmesini sağlayan bir arayüz oluşturmaya çalışıyorum. Belirli bir zaman aralığına ve haftanın bir gününe başvurmak için kullanabileceğim iki dizin içeren tablo formunda onay kutusu denetimleri oluşturmak istiyorum. Tablo şu şekilde görünür:Çok Boyutlu Denetimler Dizisi

 
      Sunday Monday Tuesday Wednesday Thursday Friday Saturday 
1:00am  [x]  [x]  [x]  [x]  [x]  [x]  [x] 
2:00am  [x]  [x]  [x]  [x]  [x]  [x]  [x] 
3:00am  [x]  [x]  [x]  [x]  [x]  [x]  [x] 
4:00am  [x]  [x]  [x]  [x]  [x]  [x]  [x] 

... vb. Yani 1:00 @ Pazar 0,1 olacak - Pazartesi 1:00 @ 0,2 olacak - vs. Ben makale oluşturur ve bir kontrol dizisi ortaya çıkarır here, bulunan izledi

ancak da çoklu değildir boyutlu.

VB.NET'te dinamik olarak denetimler oluşturup bunları çok boyutlu bir dizide saklamanın benzer bir yolu var mı?

Şimdiden teşekkürler!

cevap

1

Formunuzda bir TableLayoutPanel kullanmayı düşünebilirsiniz.

Kullanabileceğiniz yöntemlerden biri, isterse sabit boyutlu bir ızgara varsa, tasarımcıda, isterse değişken boyutlu bir ızgara için program kodunda bulunan bireysel denetimleri oluşturmak ve bunları kılavuza yerleştirmek (veya bunları eklemek) hücreler.

Tıklama olaylarını işlemeniz gerekiyorsa, tüm denetimler için olayları tek bir işleyiciye bağlayabilirsiniz (bağlandığınız makalede açıklanmıştır). Ardından, ızgara konumunu yansıtmak için her denetimin etiket özelliğini ayarlayın. Örneğin, ızgaranız on tarafından on'dan azsa, etiketi onlu hanedeki sütundaki bir tamsayı kullanarak ve oradaki satırdaki satırı kullanarak ayarlayın. İşleyici rutininde, tou, sender.tag özelliği kullanılarak hangi kontrolün tıklandığını söyleyebilir.

--- Daha fazla okuma yaptıktan sonra, TableLayoutPanel GetPositionFromControl yöntemini kullanarak olayı tetikleyen denetimin konumunu belirlemek için yani ie: tableName.GetPositionFromControl (gönderici). Bunu daha sonra kodumda deneyeceğim, belki de etiketlerden kurtulabilirim.

Olayları işlemeniz gerekmiyorsa, bireysel denetimlere erişmek için TablelayoutPanel GetControlFromLocation yöntemini kullanabilirsiniz.

Yani, aslında, kendi dizinizi kodlamak zorunda kalmadan, iki boyutlu kontrol diziniz olarak TableLayoutPanel kullanabilirsiniz.

3

Denetim, pahalı bir nesnedir. Burada çok fazla var, tabloyu boyamak kayda değer bir şekilde yavaşlamaya başlayacak. DataGridView kullanın, DataGridViewCheckBoxColumn türünde sütun ekleyin.

+0

Tamam, bakacağız. Teşekkürler –

+0

Bu cevap sorunuzu yansıtmıyor olsa da, daha iyi bir çözümdür. Ardından, Satır ve Hücre özellikleri aracılığıyla belirli hücrelere erişirsiniz. – AMissico