none
Textbox Toplam Hakkında RRS feed

  • Soru

  • Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            Dim money As Double = Convert.ToDouble(TextBox1.Text)
            TextBox1.Text = money.ToString("#,##0.00")
        End Sub
        Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
            If (Char.IsDigit(e.KeyChar) = False And e.KeyChar <> Chr(8) And e.KeyChar <> Chr(44)) Then
                e.Handled = True
            End If
        End Sub
    
    
        Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
            Dim money As Double = Convert.ToDouble(TextBox2.Text)
            TextBox2.Text = money.ToString("#,##0.00")
        End Sub
        Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
            If (Char.IsDigit(e.KeyChar) = False And e.KeyChar <> Chr(8) And e.KeyChar <> Chr(44)) Then
                e.Handled = True
            End If
        End Sub
    
        Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
            Dim money As Double = Convert.ToDouble(TextBox3.Text)
            TextBox3.Text = money.ToString("#,##0.00")
        End Sub
        Private Sub TextBox3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress
            If (Char.IsDigit(e.KeyChar) = False And e.KeyChar <> Chr(8) And e.KeyChar <> Chr(44)) Then
                e.Handled = True
            End If
        End Sub

    3 TextBox ım var. Textbox a rakam girmeye başladığımda diğer 2 textbox boş olsa dahi Textbox4 e toplam aldırmam gerekiyor.

    Yani TextBox1 e 10,00 yazdığımda bunu anında Textbox4 de görmek istiyorum.

    Textbox2 ye 11,21 yazdığımda Textbox4 ün değeri 21,21 olmalı .

    TextbBox4.Text = TextbBox1.Text + TextbBox2.Text + TextbBox3.Text

    Teşekkürler.

    8 Kasım 2013 Cuma 14:09

Yanıtlar

  • Fazla uzun ve hataya açık olmuş, keypress harf girmene engel olabilir ama copy/paste durumuna engel değildir.

    Daha pratik olur muydu bilmiyorum ama aşağıdaki gibi olabilir.

        Public Function Toplam(ByVal txt() As TextBox) As String
            Dim o = txt.Where(Function(f As TextBox, d As Double) Double.TryParse(f.Text, d) = True).Select(Function(f) Double.Parse(f.Text)).Sum()
            Return o.ToString("N2")
        End Function
    
    
        Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged, TextBox2.TextChanged, TextBox1.TextChanged
            TextBox4.Text = Toplam(New TextBox() {TextBox1, TextBox2, TextBox3})
        End Sub

    • Yanıt Olarak İşaretleyen Omur Can 8 Kasım 2013 Cuma 21:40
    8 Kasım 2013 Cuma 18:30
    Moderatör
  • Dönen değeri double olarak değiştir sonucu direk işleme tabii tutabilirsin, sıfır dönecek nasıl olsa:

    txt=(toplam(blablabla) - toplam(dsdsd)) gibi.

    Public Function Toplam(ByVal txt() As TextBox) As double
            Dim o = txt.Where(Function(f As TextBox, d As Double) Double.TryParse(f.Text, d) = True).Select(Function(f) Double.Parse(f.Text)).Sum()
            Return o
        End Function
    
    
        Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged, TextBox2.TextChanged, TextBox1.TextChanged
             TextBox4.Text = (Toplam(New TextBox() {TextBox1, TextBox2, TextBox3}) - Toplam(New TextBox() {TextBox1, TextBox2, TextBox3})).Tostring("N2")
        End Sub

    8 Kasım 2013 Cuma 22:52
    Moderatör

Tüm Yanıtlar

  • Textbox'un changesinde yapabilirsin.

    1. box'un changesine textBox3.Text = textBox1.Text yap.

    2. box'un changesine de textBox3.Text = Convert.ToString(Convert.ToDouble(textBox1.Text) + Convert.ToDouble(textBox2.Text))

    Bu şekilde yapınca olur..

    8 Kasım 2013 Cuma 17:26
  • Fazla uzun ve hataya açık olmuş, keypress harf girmene engel olabilir ama copy/paste durumuna engel değildir.

    Daha pratik olur muydu bilmiyorum ama aşağıdaki gibi olabilir.

        Public Function Toplam(ByVal txt() As TextBox) As String
            Dim o = txt.Where(Function(f As TextBox, d As Double) Double.TryParse(f.Text, d) = True).Select(Function(f) Double.Parse(f.Text)).Sum()
            Return o.ToString("N2")
        End Function
    
    
        Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged, TextBox2.TextChanged, TextBox1.TextChanged
            TextBox4.Text = Toplam(New TextBox() {TextBox1, TextBox2, TextBox3})
        End Sub

    • Yanıt Olarak İşaretleyen Omur Can 8 Kasım 2013 Cuma 21:40
    8 Kasım 2013 Cuma 18:30
    Moderatör
  • Biliyorsun double almak istediğinde girilen alınan değer eğer harf veya boşluk ise toplama işleminde hata veriyor.

    Acemice bir kod olarak gösterirsek;

    Private Sub topla() Dim a as double = 0 if textbox1.text <> then a += cdbl(textbox1.text) end if if textbox2.text <> then a += cdbl(textbox2.text) end if

    /bu şekilde devam edecek

    textbox4.text = a

    Textboxların textchanged olayına topla() metodunu işletebilirsin böylece. Tabi çok sayıyı toplamak istersen pratik değil.

    8 Kasım 2013 Cuma 20:19
  • Fazla uzun ve hataya açık olmuş, keypress harf girmene engel olabilir ama copy/paste durumuna engel değildir.

    Daha pratik olur muydu bilmiyorum ama aşağıdaki gibi olabilir.

        Public Function Toplam(ByVal txt() As TextBox) As String
            Dim o = txt.Where(Function(f As TextBox, d As Double) Double.TryParse(f.Text, d) = True).Select(Function(f) Double.Parse(f.Text)).Sum()
            Return o.ToString("N2")
        End Function
    
    
        Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged, TextBox2.TextChanged, TextBox1.TextChanged
            TextBox4.Text = Toplam(New TextBox() {TextBox1, TextBox2, TextBox3})
        End Sub


    Öncelikle teşekkürler. Bunun çıkarma işlemi nasıl olabilir acaba ?
    8 Kasım 2013 Cuma 21:55
  • :) Denemedim de textboxa girilen değerlerin başına - konursa çıkarır. Kimi kimden çıkaracaksın?
    8 Kasım 2013 Cuma 22:22
    Moderatör
  • :) Denemedim de textboxa girilen değerlerin başına - konursa çıkarır. Kimi kimden çıkaracaksın?


    #Region "A-BRÜT SATIŞLAR"
        Private Sub DSayisalTextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles DSayisalTextBox1.TextChanged
            DSayisalTextBox4.Text = Toplama(New dSayisalTextBox() {DSayisalTextBox1, DSayisalTextBox2, DSayisalTextBox3})
        End Sub
        Private Sub DSayisalTextBox2_TextChanged(sender As System.Object, e As System.EventArgs) Handles DSayisalTextBox2.TextChanged
            DSayisalTextBox4.Text = Toplama(New dSayisalTextBox() {DSayisalTextBox1, DSayisalTextBox2, DSayisalTextBox3})
        End Sub
        Private Sub DSayisalTextBox3_TextChanged(sender As System.Object, e As System.EventArgs) Handles DSayisalTextBox3.TextChanged
            DSayisalTextBox4.Text = Toplama(New dSayisalTextBox() {DSayisalTextBox1, DSayisalTextBox2, DSayisalTextBox3})
        End Sub
    #End Region

    Bu 1. Toplama Alanım

    #Region "B-SATIŞ İNDİRİMLERİ  ( - )"
        Private Sub DSayisalTextBox5_TextChanged(sender As System.Object, e As System.EventArgs) Handles DSayisalTextBox5.TextChanged
            DSayisalTextBox8.Text = Toplama(New dSayisalTextBox() {DSayisalTextBox5, DSayisalTextBox6, DSayisalTextBox7})
        End Sub
        Private Sub DSayisalTextBox6_TextChanged(sender As System.Object, e As System.EventArgs) Handles DSayisalTextBox6.TextChanged
            DSayisalTextBox8.Text = Toplama(New dSayisalTextBox() {DSayisalTextBox5, DSayisalTextBox6, DSayisalTextBox7})
        End Sub
        Private Sub DSayisalTextBox7_TextChanged(sender As System.Object, e As System.EventArgs) Handles DSayisalTextBox7.TextChanged
            DSayisalTextBox8.Text = Toplama(New dSayisalTextBox() {DSayisalTextBox5, DSayisalTextBox6, DSayisalTextBox7})
        End Sub
    #End Region

    Bu 2. toplama alanım

    Bu işlemler yapılırken şunun olmasını istiyorum

    DSayisalTextBox9.Text = DSayisalTextBox4.Text - DSayisalTextBox8.Text

    8 Kasım 2013 Cuma 22:32
  • Dönen değeri double olarak değiştir sonucu direk işleme tabii tutabilirsin, sıfır dönecek nasıl olsa:

    txt=(toplam(blablabla) - toplam(dsdsd)) gibi.

    Public Function Toplam(ByVal txt() As TextBox) As double
            Dim o = txt.Where(Function(f As TextBox, d As Double) Double.TryParse(f.Text, d) = True).Select(Function(f) Double.Parse(f.Text)).Sum()
            Return o
        End Function
    
    
        Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged, TextBox2.TextChanged, TextBox1.TextChanged
             TextBox4.Text = (Toplam(New TextBox() {TextBox1, TextBox2, TextBox3}) - Toplam(New TextBox() {TextBox1, TextBox2, TextBox3})).Tostring("N2")
        End Sub

    8 Kasım 2013 Cuma 22:52
    Moderatör