Muy bueno Diego, gracias por compartir
        un abrazo, Pablo
        Cel.: 011-1566721644

---- Original Message ----
From: Diego Spinedi
To: [email protected]
Sent: Mie, Dic 10, 2014, 10:15 AM
Subject: [puntonet] Consulta
Esto fue en las cajas de texto....
 '*****************************trabajo con las cajas para formatear
importes
    Private Function ReFormat(ByVal sTxt As String) As String
        If Len(sTxt) > 1 Then
            sInputString = UnFormatText(sTxt)
        Else
            sInputString = sTxt
        End If
        ReFormat = SetColonAndDot(sInputString)
    End Function
    Private Function SetColonAndDot(ByVal sTxt As String) As String
        Dim lg As Integer
        lg = Len(sTxt)
        Select Case lg
            Case 0
                SetColonAndDot = "0,00" & sTxt
            Case 1
                SetColonAndDot = "0,0" & sTxt
            Case 2
                SetColonAndDot = "0," & sTxt
            Case Else
                If lg > 5 And lg < 9 Then
                    SetColonAndDot = Microsoft.VisualBasic.Left(sTxt, lg -
5) & "." & Microsoft.VisualBasic.Mid(sTxt, lg - 4, 3) & "," &
Microsoft.VisualBasic.Right(sTxt, 2)
                ElseIf lg > 8 And lg < 12 Then
                    SetColonAndDot = Microsoft.VisualBasic.Left(sTxt, lg -
8) & "." & Microsoft.VisualBasic.Mid(sTxt, lg - 7, 3) & "." &
Microsoft.VisualBasic.Mid(sTxt, lg - 4, 3) & "," &
Microsoft.VisualBasic.Right(sTxt, 2)
                ElseIf lg > 11 And lg < 15 Then
                    SetColonAndDot = Microsoft.VisualBasic.Left(sTxt, lg -
11) & "." & Microsoft.VisualBasic.Mid(sTxt, lg - 10, 3) & "." &
Microsoft.VisualBasic.Mid(sTxt, lg - 7, 3) & "." &
Microsoft.VisualBasic.Mid(sTxt, lg - 4, 3) & "," &
Microsoft.VisualBasic.Right(sTxt, 2)
                ElseIf lg > 14 Then
                    SetColonAndDot = Microsoft.VisualBasic.Left(sTxt, lg -
14) & "." & Microsoft.VisualBasic.Mid(sTxt, lg - 13, 3) & "." &
Microsoft.VisualBasic.Mid(sTxt, lg - 10, 3) & "." &
Microsoft.VisualBasic.Mid(sTxt, lg - 7, 3) & "." &
Microsoft.VisualBasic.Mid(sTxt, lg - 4, 3) & "," &
Microsoft.VisualBasic.Right(sTxt, 2)
                Else
                    SetColonAndDot = Microsoft.VisualBasic.Left(sTxt, lg -
2) & "," & Microsoft.VisualBasic.Right(sTxt, 2)
                    ' SetColonAndDot = Microsoft.VisualBasic.Mid(sTxt,
Len(lg) - (Len(lg) - 1), 1) & "." & Microsoft.VisualBasic.Right(sTxt, 2) &
"," & "00"
                End If
        End Select
    End Function
    Private Function UnFormatText(ByVal sTxt As String) As String
        Dim i As Integer, sResult As String, sSign As String, bZerosDone As
Boolean
        sResult = ""
        For i = 1 To Len(sTxt)
            sSign = Mid(sTxt, i, 1)
            If sSign  "," And sSign  "." Then
                'cuts out all dots and colons
                If sSign  "0" Or bZerosDone Then
                    ' cuts out all zeros until another number follows
                    sResult = sResult & sSign
                    bZerosDone = True
                End If
            End If
        Next
        UnFormatText = sResult
    End Function
    Private Sub txtPercepIva_TextChanged(sender As Object, e As EventArgs)
Handles txtPercepIva.TextChanged
        If Me.txtPercepIva.Text = "" Then Exit Sub
        If bJustChanged Then
            bJustChanged = False
        Else
            bJustChanged = True
            Me.txtPercepIva.Text = ReFormat(Me.txtPercepIva.Text)
            ' setting Cursor back to the end of the number
            Me.txtPercepIva.SelectionStart = Len(Me.txtPercepIva.Text)
            Me.txtPercepIva.SelectionLength = 0
        End If
    End Sub
    Private Sub txtPercepIva_GotFocus(sender As Object, e As EventArgs)
Handles txtPercepIva.GotFocus
        Me.txtPercepIva.SelectionStart = 0
        Me.txtPercepIva.SelectionLength = Len(Me.txtPercepIva.Text)
    End Sub
    Private Sub txtPercepIva_KeyPress(sender As Object, e As
KeyPressEventArgs) Handles txtPercepIva.KeyPress
        If Not IsNumeric(e.KeyChar) And Not (e.KeyChar = ControlChars.Back)
Then
            e.Handled = True
        End If
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            SendKeys.Send("{TAB}")
        End If
    End Sub
    Private Sub txtPercepIva_LostFocus(sender As Object, e As EventArgs)
Handles txtPercepIva.LostFocus
        ModificarTotales()
    End Sub
    Private Sub txtPbase_GotFocus(sender As Object, e As EventArgs) Handles
txtPbase.GotFocus
        Me.txtPbase.SelectionStart = 0
        Me.txtPbase.SelectionLength = Len(Me.txtPbase.Text)
    End Sub
    Private Sub txtPbase_KeyPress(sender As Object, e As KeyPressEventArgs)
Handles txtPbase.KeyPress
        If Not IsNumeric(e.KeyChar) And Not (e.KeyChar = ControlChars.Back)
Then
            e.Handled = True
        End If
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            SendKeys.Send("{TAB}")
        End If
    End Sub
    Private Sub txtPbase_TextChanged(sender As Object, e As EventArgs)
Handles txtPbase.TextChanged
        If Me.txtPbase.Text = "" Then Exit Sub
        If bJustChanged Then
            bJustChanged = False
        Else
            bJustChanged = True
            Me.txtPbase.Text = ReFormat(Me.txtPbase.Text)
            ' setting Cursor back to the end of the number
            Me.txtPbase.SelectionStart = Len(Me.txtPbase.Text)
            Me.txtPbase.SelectionLength = 0
        End If
    End Sub
    Private Sub txtiva_GotFocus(sender As Object, e As EventArgs) Handles
txtiva.GotFocus
        Me.txtiva.SelectionStart = 0
        Me.txtiva.SelectionLength = Len(Me.txtiva.Text)
    End Sub
    Private Sub txtiva_KeyPress(sender As Object, e As KeyPressEventArgs)
Handles txtiva.KeyPress
        If Not IsNumeric(e.KeyChar) And Not (e.KeyChar = ControlChars.Back)
Then
            e.Handled = True
        End If
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            SendKeys.Send("{TAB}")
        End If
    End Sub
    Private Sub txtiva_LostFocus(sender As Object, e As EventArgs) Handles
txtiva.LostFocus
        ModificarTotales()
    End Sub
    Private Sub txtiva_TextChanged(sender As Object, e As EventArgs)
Handles txtiva.TextChanged
        If Me.txtiva.Text = "" Then Exit Sub
        If bJustChanged Then
            bJustChanged = False
        Else
            bJustChanged = True
            Me.txtiva.Text = ReFormat(Me.txtiva.Text)
            ' setting Cursor back to the end of the number
            Me.txtiva.SelectionStart = Len(Me.txtiva.Text)
            Me.txtiva.SelectionLength = 0
        End If
    End Sub
    '******************************ImpInt
    Private Sub txtimpint_GotFocus(sender As Object, e As EventArgs)
Handles txtImpInt.GotFocus
        Me.txtImpInt.SelectionStart = 0
        Me.txtImpInt.SelectionLength = Len(Me.txtiva.Text)
    End Sub
    Private Sub txtimpint_KeyPress(sender As Object, e As
KeyPressEventArgs) Handles txtImpInt.KeyPress
        If Not IsNumeric(e.KeyChar) And Not (e.KeyChar = ControlChars.Back)
Then
            e.Handled = True
        End If
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            SendKeys.Send("{TAB}")
        End If
    End Sub
    Private Sub txtimpint_LostFocus(sender As Object, e As EventArgs)
Handles txtImpInt.LostFocus
        ModificarTotales()
    End Sub
    Private Sub txtimpint_TextChanged(sender As Object, e As EventArgs)
Handles txtImpInt.TextChanged
        If Me.txtImpInt.Text = "" Then Exit Sub
        If bJustChanged Then
            bJustChanged = False
        Else
            bJustChanged = True
            Me.txtImpInt.Text = ReFormat(Me.txtImpInt.Text)
            ' setting Cursor back to the end of the number
            Me.txtImpInt.SelectionStart = Len(Me.txtImpInt.Text)
            Me.txtImpInt.SelectionLength = 0
        End If
    End Sub

'*****************IB************************************************************************************
    Private Sub txtib_GotFocus(sender As Object, e As EventArgs) Handles
txtIB.GotFocus
        Me.txtIB.SelectionStart = 0
        Me.txtIB.SelectionLength = Len(Me.txtIB.Text)
    End Sub
    Private Sub txtib_KeyPress(sender As Object, e As KeyPressEventArgs)
Handles txtIB.KeyPress
        If Not IsNumeric(e.KeyChar) And Not (e.KeyChar = ControlChars.Back)
Then
            e.Handled = True
        End If
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            SendKeys.Send("{TAB}")
        End If
    End Sub
    Private Sub txtib_LostFocus(sender As Object, e As EventArgs) Handles
txtIB.LostFocus
        ModificarTotales()
    End Sub
    Private Sub txtib_TextChanged(sender As Object, e As EventArgs) Handles
txtIB.TextChanged
        If Me.txtIB.Text = "" Then Exit Sub
        If bJustChanged Then
            bJustChanged = False
        Else
            bJustChanged = True
            Me.txtIB.Text = ReFormat(Me.txtIB.Text)
            ' setting Cursor back to the end of the number
            Me.txtIB.SelectionStart = Len(Me.txtIB.Text)
            Me.txtIB.SelectionLength = 0
        End If
    End Sub

'********************Descuento**************************************************************************
    Private Sub txtDto_GotFocus(sender As Object, e As EventArgs) Handles
txtDto.GotFocus
        Me.txtDto.SelectionStart = 0
        Me.txtDto.SelectionLength = Len(Me.txtDto.Text)
    End Sub
    Private Sub txtDto_KeyPress(sender As Object, e As KeyPressEventArgs)
Handles txtDto.KeyPress
        If Not IsNumeric(e.KeyChar) And Not (e.KeyChar = ControlChars.Back)
Then
            e.Handled = True
        End If
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            SendKeys.Send("{TAB}")
        End If
    End Sub
    Private Sub txtDto_LostFocus(sender As Object, e As EventArgs) Handles
txtDto.LostFocus
        ModificarTotales()
    End Sub
    Private Sub txtDto_TextChanged(sender As Object, e As EventArgs)
Handles txtDto.TextChanged
        If Me.txtIB.Text = "" Then Exit Sub
        If bJustChanged Then
            bJustChanged = False
        Else
            bJustChanged = True
            Me.txtDto.Text = ReFormat(Me.txtDto.Text)
            ' setting Cursor back to the end of the number
            Me.txtDto.SelectionStart = Len(Me.txtDto.Text)
            Me.txtDto.SelectionLength = 0
        End If
    End Sub

'*****************************************TOTAL******************************************************************
    Private Sub txttotal_GotFocus(sender As Object, e As EventArgs) Handles
txttotal.GotFocus
        Me.txttotal.SelectionStart = 0
        Me.txttotal.SelectionLength = Len(Me.txttotal.Text)
    End Sub
    Private Sub txttotal_KeyPress(sender As Object, e As KeyPressEventArgs)
Handles txttotal.KeyPress
        If Not IsNumeric(e.KeyChar) And Not (e.KeyChar = ControlChars.Back)
Then
            e.Handled = True
        End If
        If e.KeyChar = ChrW(Keys.Enter) Then
            e.Handled = True
            SendKeys.Send("{TAB}")
        End If
    End Sub
    Private Sub txttotal_TextChanged(sender As Object, e As EventArgs)
Handles txttotal.TextChanged
        If Me.txttotal.Text = "" Then Exit Sub
        If bJustChanged Then
            bJustChanged = False
        Else
            bJustChanged = True
            Me.txttotal.Text = ReFormat(Me.txttotal.Text)
            ' setting Cursor back to the end of the number
            Me.txttotal.SelectionStart = Len(Me.txttotal.Text)
            Me.txttotal.SelectionLength = 0
        End If
    End Sub
'----Esto en load del principal....

 Private Sub FormPrincipal_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
        System.Threading.Thread.CurrentThread.CurrentCulture = New
CultureInfo("es-ES")

System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator
= ","

System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator
= "."
    End Sub
' y esto para tomar los valores.......................
 Convert.ToDouble(Me.txtPbase.Text, CultureInfo.CurrentCulture)
asi lo logre, aunque reconozco que la solución de Marcelo era mejor...
El 10 de diciembre de 2014, 9:51, Pablo Marzullo  escribió:
        Diego, estaría bueno que aportes detalles de como lo resolviste.
        Saludos, Pablo
        ---- Original Message ----
From: Diego Spinedi
To: [email protected] (mailto:[email protected])
Sent: Mie, Dic 10, 2014, 9:44 AM
Subject: [puntonet] Consulta

No, debido a que tenia muchas textbox no cambie por la función de Marcelo.
La probe en un poryecto aparte y me funciono, pero antes de cambiar todos
los textbox que tenia, utilice la cultura de la aplicación y aparentemente
funcionó. Obviamente tengo formateos y demás en los textbox...
¿¿Fui claro??
Saludos
Diego
El 9 de diciembre de 2014, 16:36, Cristian  escribió:
        Diego, perdoname la re-pregunta, no entiendo cómo lo solucionaste, ¿fue
utilizando el NumericTextbox que extiende de Textbox que aportó Marcelo
más tu configuración de Cutlure?
        Gracias,
        Cristian.
        De: [email protected] (mailto:[email protected])
[mailto:[email protected] (mailto:[email protected])] En nombre de
Diego Spinedi
Enviado el: martes, 09 de diciembre de 2014 07:50
Para: [email protected] (mailto:[email protected])
Asunto: [puntonet] Consulta
        Listeros: buenos dias. Queria agradecer los aportes que me han realizado
para poder solucionar el problema. Finalmente (creo) haberlo resuelto con
la clase System.Globalization definiendo la cultura de mi aplicación. Me
dió bastante trabajo pero creo que funcionaron todos los casos...de todas
maneras mi usuario será quien me de la última palabra,....
        Gracias a todos!!!
        Saludos
        Diego
        El 5 de diciembre de 2014, 15:00, Diego Spinedi  escribió:
        Muy amable Marcelo! gracias !
        Lo voy a probar y luego te aviso como me fue!
        El 5 de diciembre de 2014, 14:43, Marcelo Abosch  escribió:
        Hace mucho hice esta clase fijate si te sirve
        using System;

        using System.Collections.Generic;

        using System.Linq;

        using System.Text;

        using System.Windows.Forms;

        using System.Globalization;
        namespace App

        {

            public class NumericTextBox : TextBox

            {

                bool allowSpace = false;
                public NumericTextBox()

                {

                    this.TextAlign = HorizontalAlignment.Right;

                }
                protected override void OnLeave(EventArgs e)

                {

                    base.OnLeave(e);

                    if (!string.IsNullOrWhiteSpace(this.Text))

                    {

                        this.Text = decimal.Parse(this.Text).ToString("0.00");

                    }

                }
                protected override void OnTextChanged(EventArgs e)

                {
                    NumberFormatInfo numberFormatInfo =
System.Globalization.CultureInfo.CurrentCulture.NumberFormat;

                    string decimalSeparator =
numberFormatInfo.NumberDecimalSeparator;

                    if (this.Text.IndexOf(decimalSeparator) > -1)

                    {

                        var decimals =
this.Text.Substring(this.Text.IndexOf(decimalSeparator)+1);

                        if (decimals.Length > 2)

                        {
                            this.Text = this.Text.Substring(0, this.Text.Length 
-
1);

                            this.SelectionStart = this.Text.Length;

                            this.SelectionLength = 0;

                        }

                    }

                    base.OnTextChanged(e);
                }
                protected override void X_X_OnKeyPress(KeyPressEventArgs e)

                {

                    base.X_X_OnKeyPress(e);
                    NumberFormatInfo numberFormatInfo =
System.Globalization.CultureInfo.CurrentCulture.NumberFormat;

                    string decimalSeparator =
numberFormatInfo.NumberDecimalSeparator;

                    string groupSeparator = 
numberFormatInfo.NumberGroupSeparator;

                    string negativeSign = numberFormatInfo.NegativeSign;
                    string keyInput = e.KeyChar.ToString();
                    if (Char.IsDigit(e.KeyChar))

                    {

                        // Digitos  OK

                    }

                    else if (keyInput.Equals(decimalSeparator))

                    {

                        // Decimal separator  OK

                    }

                    else if (e.KeyChar == 'b')

                    {

                         // Backspace  OK

                    }

                    else if (this.allowSpace && e.KeyChar == ' ')

                    {
                    }

                    else

                    {

                        e.Handled = true;

                    }

                }
                public int IntValue

                {

                    get

                    {

                        return Int32.Parse(this.Text);

                    }

                }
                public decimal DecimalValue

                {

                    get

                    {

                        if (string.IsNullOrWhiteSpace(this.Text))

                        {

                            return Decimal.Parse("0");

                        }

                        else

                        {

                            return Decimal.Parse(this.Text);

                        }

                    }

                }
                public bool AllowSpace

                {

                    set

                    {

                        this.allowSpace = value;

                    }
                    get

                    {

                        return this.allowSpace;

                    }

                }

            }

        }
        From: [email protected] (mailto:[email protected])
[mailto:[email protected] (mailto:[email protected])] On Behalf Of
Diego Spinedi
Sent: Friday, December 05, 2014 2:28 PM
To: [email protected] (mailto:[email protected])
Subject: [puntonet] Consulta
        Excatamente lo que acabas de definir. Deberia ser un textbox que acepte
decimales, las teclas de  cursor+borrado+suprimir+enter+punto  y que
convierta el punto  en coma.
        El 5 de diciembre de 2014, 14:21, Pablo Marzullo  escribió:

        Hola Diego, pasa mas detalles... el control sobre el que queres validar 
es
un Textbox? que queres que valide? que solo tome números, acepte las
teclas del cursor+borrado+suprimir+enter+punto (y que cuando presionas coma
lo convierta a punto o la inversa) es eso??
        Saludos, Pablo
        IAV Tech

        Mendoza 246, (1838) Luis Guillon, Bs As, Argentina

        www.iav-tech.com (http://www.iav-tech.com)

        Cel.: 011-1566721644
        ---- Original Message ----
From: Diego Spinedi
To: [email protected] (mailto:[email protected])
Sent: Vie, Dic 5, 2014, 2:15 PM
Subject: [puntonet] Consulta
        Estoy desarrollando en winforms..
        Gracias!!!
        El 5 de diciembre de 2014, 9:40, Leandro Halfon  escribió:
        Diego,
        ¿Estas en entorno web o winforms?
        2014-12-05 9:33 GMT-03:00 Diego Spinedi :
        Listeros: Estoy armando una aplicación de facturación y me encuentro con
el inconveniente de que no encuentro un control adecuado para los importes.
Lo termine haciendo con los text...pero alguien tiene alguna recomendación
sobre algun control que no me genere dolores de cabeza con los formatos y
validaciones????
        Gracias!!!
        --
        Diego Spinedi
        --
        Diego Spinedi
        --
        Diego Spinedi
        --
        Diego Spinedi
        --
        Diego Spinedi
------------------------------------
        Se certificó que el correo no contiene virus.
Comprobada por AVG - www.avg.es (http://www.avg.es)
Versión: 2015.0.5577 / Base de datos de virus: 4235/8701 - Fecha de la
versión: 08/12/2014
--

Diego Spinedi
--
Diego Spinedi

Responder a