none
Textboxa Para Değeri Girme RRS feed

  • Soru

  • para değeri girerken focusun hep virgülün solunda olmasını virgüle basılınca virgülün sağına atmasını istiyorum kullandığım kod şöyle

    Private Sub fiyat_txt_TextChanged(sender As System.Object, e As System.EventArgs) Handles fiyat_txt.TextChanged
            If fiyat_txt.Text <> "" Then
                fiyat_txt.Text = Convert.ToDouble(fiyat_txt.Text.Replace("TL", "")).ToString("c")
            Else
                fiyat_txt.Text = 0.ToString("c")
            End If
        End Sub

    ama örneğin 78 yazdığımda focus sola geçtiği için 87 olarak yazılıyor

    8 Haziran 2014 Pazar 00:33

Yanıtlar

  • Öncelikle kodun hatalı.

    Adam yazarken bu işi yapmak yerine yazma işini bitirdikten sonra paraya çevirsen daha pratik olmaz mı?

    Yazarken en azından adamın doğru giriş yapıp yapmadığını kontrol et. Replace ile "TL" silmek doğru gibi görünse de; ya adamın bilgisayarında geçerli kültür sınıfında TL yoksa, YTL simgesi varsa veya başka bir kültürse?

    İmleci sona şu kod götürür:

    TextBox1.Select(TextBox1.Text.Length, 0)

    Öneri olarak da aşağıdaki gibi bir mantığı öneririm.

        Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
            Dim d As Double = 0
    
            If Double.TryParse(TextBox1.Text, d) = True Then
                TextBox1.BackColor = Color.Green
            Else
                TextBox1.BackColor = Color.Red
            End If
        End Sub
    
        Private Sub TextBox1_Leave(sender As System.Object, e As System.EventArgs) Handles TextBox1.Leave
            Dim d As Double = 0
    
            If Double.TryParse(TextBox1.Text, d) = True Then
                TextBox1.Text = d.ToString("c")
                TextBox1.BackColor = Color.Green
            Else
                TextBox1.BackColor = Color.Red
            End If
        End Sub


    • Düzenleyen Aslan E 8 Haziran 2014 Pazar 21:31
    • Yanıt Olarak İşaretleyen Özgür Tekbaş 13 Haziran 2014 Cuma 11:44
    8 Haziran 2014 Pazar 21:25

Tüm Yanıtlar

  • TextBox yerine MaskedTextBox kullan daha kullanışlı ve işini görecektir.

    @DetayliBilgi  : http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx

         :http://msdn.microsoft.com/tr-tr/library/system.windows.forms.maskedtextbox.aspx

    8 Haziran 2014 Pazar 15:27
  • ama dediğim şekilde virgülden önce kalması gerek focusun
    8 Haziran 2014 Pazar 17:12
  •  Dim c As Integer = Val(fiyat_txt.Text)
            Dim str As String = CInt(c)
            If Len(str) = 1 Then
                fiyat_txt.Select(2, 0)
            ElseIf Len(str) = 2 Then
                fiyat_txt.Select(3, 0)
            ElseIf Len(str) = 3 Then
                fiyat_txt.Select(4, 0)
            End If

    olarak yapıyorum bir sürü yöntem denedim lütfen yardım!

    8 Haziran 2014 Pazar 21:03
  • Öncelikle kodun hatalı.

    Adam yazarken bu işi yapmak yerine yazma işini bitirdikten sonra paraya çevirsen daha pratik olmaz mı?

    Yazarken en azından adamın doğru giriş yapıp yapmadığını kontrol et. Replace ile "TL" silmek doğru gibi görünse de; ya adamın bilgisayarında geçerli kültür sınıfında TL yoksa, YTL simgesi varsa veya başka bir kültürse?

    İmleci sona şu kod götürür:

    TextBox1.Select(TextBox1.Text.Length, 0)

    Öneri olarak da aşağıdaki gibi bir mantığı öneririm.

        Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
            Dim d As Double = 0
    
            If Double.TryParse(TextBox1.Text, d) = True Then
                TextBox1.BackColor = Color.Green
            Else
                TextBox1.BackColor = Color.Red
            End If
        End Sub
    
        Private Sub TextBox1_Leave(sender As System.Object, e As System.EventArgs) Handles TextBox1.Leave
            Dim d As Double = 0
    
            If Double.TryParse(TextBox1.Text, d) = True Then
                TextBox1.Text = d.ToString("c")
                TextBox1.BackColor = Color.Green
            Else
                TextBox1.BackColor = Color.Red
            End If
        End Sub


    • Düzenleyen Aslan E 8 Haziran 2014 Pazar 21:31
    • Yanıt Olarak İşaretleyen Özgür Tekbaş 13 Haziran 2014 Cuma 11:44
    8 Haziran 2014 Pazar 21:25
  • yanıtınız için teşekkürler

    textboxdaki veriyi sonradan çevirmesi tabi kolay ama ben kullanıcı yazarken hep ,00 in solunda olmasını istiyorum hep imlecin sadece , e bastığında sağa geçecek terkon exa veresiye programında da böyle ve gayet kullanışlı

    8 Haziran 2014 Pazar 22:06