merhaba,
sabit 10tane textboxum var. (tbox1, tbox2,tbox3.... )
Bu 10 textboxa bazen 2tanesine bazen 6 tanesine bazende hepsine veri gönderiyorum.
yapmak istediğim şu.
diyelim textboxların 3üne "yumurta", 2sinede "civciv" verisini gönderdim.
sonuç labelimde: %60 yumurta, %40 civciv
olarak göstermek istiyorum.
Birbaşka örnek ile;
5 adet textboxa "Elma", 2 adetine "Armut" 1tanesinede "Domates" gönderdiysem
sonuç labelim: %62,5 Elma, % 25 Armut, %12,5 Domates
Böyle birşeyi nasıl yapabilirim
teşekkürler.
10 Textbox u analiz edip verileri yansıtma
9
●700
- 20-05-2013, 11:42:02Değerleri gönderdikten sonra foreach ile tüm textboxları gezip benzer olanları bir diziye alıp sayıları bulabilirsin ve toplamları aldıktan sonra % hesaplayabilirsin.
- 20-05-2013, 13:37:34Şimdiye kadar yapabildiğim bu, kod olarak bir örnek gösterebilirmisiniz
aşağıdaki kodla tüm textboxları kontrol edip toplam sayıyı bulabiliyorum ilerisine gidemedim.
Dim toplam As Integer = 0 For Each ctl As Control In Me.Controls If (TypeOf ctl Is TextBox) Then toplam = toplam + 1 End If Next Label1.Text = toplam - 20-05-2013, 21:49:33Kimlik doğrulama veya yönetimden onay bekliyor.Bir Dictionary yarat ve içerisine textbox değerlerini at.Her aynı değerde artır.
1 textbox %10 değerinde. Son hesaplamasını sen yaparsın sanırım. Kaç tane textbox dolu ise ona göre oranı sen belirle. Ben 10 textbox'un da dolu olduğunu varsayarak 10 verdim.
Dictionary<int, string> dic = new Dictionary<int, string>(); foreach (Control ctrl in this.Controls) { if (!dic.ContainsKey(ctrl.Text)) dic.Add(ctrl.Text, 10); else { for (int i = 0; i < dic.Count; i++) { var item = dic.ElementAt(i); var itemKey = item.Key; var itemValue = item.Value; dic[i] = itemValue + 10; } } } - 21-05-2013, 09:20:47Vb.net olduğu için kodları anladığım kadarıyla uyarlamaya çalıştım. nereden yanlış yapıyor olabilirimrob33n adlı üyeden alıntı: mesajı görüntüle
Dim dic As New Dictionary(Of String, String)() For Each ctrl As Control In Panel2.Controls If Not dic.ContainsKey(ctrl.Text) Then dic.Add(ctrl.Text, 10) Else For i As Integer = 0 To dic.Count - 1 Dim item = dic.ElementAt(i) Dim itemKey = item.Key Dim itemValue = item.Value dic(i) = itemValue + 10 Next End If Next ListBox1.DataSource = New BindingSource(dic, Nothing)
- 22-05-2013, 09:28:16rob33n adlı üyeden alıntı: mesajı görüntüle
Dim dic As New Dictionary(Of String, String)() For Each ctrl As Control In Panel2.Controls If Not dic.ContainsKey(ctrl.Text) Then dic.Add(ctrl.Text, 10) Else For i As Integer = 0 To dic.Count - 1 Dim item = dic.ElementAt(i) Dim itemKey = item.Key Dim itemValue = item.Value dic(itemKey) = itemValue + 10 Next End If Next ListBox1.DataSource = New BindingSource(dic, Nothing)
ufak bir kısımda hata var sanırım çözemedim - 22-05-2013, 12:57:39buton ismi: bBtnHesap
label ismi : lblSonuc olacak şekilde aşağıdaki formu hazırlayabilirsin


not: projede linq kullandığım için framework 3.5 ve üstü kullanmalısın
mümkün olduğunda açık yazdım, anladığın belki linq kısmı olabilir, orada rob33n'nin kullandığı gibi ContainsKey kullanabilirsin (benim tmp =0yazdığım yerde)


