• 20-05-2013, 11:18:31
    #1
    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.
  • 20-05-2013, 11:42:02
    #2
    Değ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
    #3
    Ş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:33
    #4
    Kimlik 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;
    		}
    	}
    }
  • 20-05-2013, 23:15:52
    #5
    teşekkürler yarın deneyeceğim.
  • 21-05-2013, 09:20:47
    #6
    rob33n adlı üyeden alıntı: mesajı görüntüle
    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;
    		}
    	}
    }
    Vb.net olduğu için kodları anladığım kadarıyla uyarlamaya çalıştım. nereden yanlış yapıyor olabilirim
    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)
  • 21-05-2013, 21:52:46
    #7
    dic(i) kısmını dic(itemKey) olarak değiştirip dener misin.
  • 22-05-2013, 09:28:16
    #8
    rob33n adlı üyeden alıntı: mesajı görüntüle
    dic(i) kısmını dic(itemKey) olarak değiştirip dener misin.
     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:39
    #9
    buton 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)