Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: luis456 en 23 Octubre 2013, 20:40



Título: De nuevo al ataque jeje no logro controlar que no me muestre lo que quiero
Publicado por: luis456 en 23 Octubre 2013, 20:40
Bien aunque no lo crean me da pena preguntar ya varias veces lo mismo  :silbar: no logro hacer que en unos resultados de unas simples cuentas no me muestren en los texboxes. dentro de un rango establecido  ( mi rango es 00 al 99 )  y todo lo que se pase de 99 no lo debe mostrar pero si debe de mostrar el 99, bien he gogleado y buscado por este mismo foro pero na,,,estoy probando con esta rutina pero na tampoco....AUXILIO :)

Código:
Private Sub TextBox7_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox48.TextChanged
        If Val(TextBox7.Text) >= 99 Then
            TextBox7.Text = ""
        End If
    End Sub


Luis



Título: Re: De nuevo al ataque jeje no logro controlar que no me muestre lo que quiero
Publicado por: El Benjo en 23 Octubre 2013, 21:51
Bueno, depende de lo que quieras realmente si lo que quieres es que simplemente no se puedan ingresar números en un rango mayor entonces sería algo como:

Código
  1. Private Sub TextBox7_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox48.TextChanged
  2.        If Val(TextBox7.Text) > 99 Then
  3.            TextBox7.Text = 99
  4.        End If
  5. End Sub
  6.  

Pero yo te recomendaría utilizar el control "NumericUpDown", es más fácil de programar y es un poco más profesional hacerlo de esta manera.

Saludos


Título: Re: De nuevo al ataque jeje no logro controlar que no me muestre lo que quiero
Publicado por: luis456 en 24 Octubre 2013, 06:17
Bueno, depende de lo que quieras realmente si lo que quieres es que simplemente no se puedan ingresar números en un rango mayor entonces sería algo como:

Código
  1. Private Sub TextBox7_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox48.TextChanged
  2.        If Val(TextBox7.Text) > 99 Then
  3.            TextBox7.Text = 99
  4.        End If
  5. End Sub
  6.  

Pero yo te recomendaría utilizar el control "NumericUpDown", es más fácil de programar y es un poco más profesional hacerlo de esta manera.

Saludos


Lo he probado pero no me funciona :) sera porque yo no escribo directamente sobre el texbox ? ya que este recibe de una variable el resultado a mostrar en el texbox



Código:
Result1 = {Num1 + 1, Num1 + 2, Num1 + 20} _


Luis









Título: Re: De nuevo al ataque jeje no logro controlar que no me muestre lo que quiero
Publicado por: Eleкtro en 24 Octubre 2013, 09:08
@luis456

Lo he probado pero no me funciona :) sera porque yo no escribo directamente sobre el texbox ? ya que este recibe de una variable el resultado a mostrar en el texbox

Si no estás escribiendo diréctamente sobre el Textbox, entonces porque te suscribes el evento TextChanged del textbox y porque intentas hacer las operacions de rango dentro de ese bloque?.

Citar
Código:
  Private Sub TextBox7_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox48.TextChanged
        If Val(TextBox7.Text) >= 99 Then
            TextBox7.Text = ""
        End If
    End Sub

Es tan sencillo como que compruebes el rango del valor de la variable Result1 y según el rango que sea, asignas un valor u otro al Textbox7, no compares la propiedad Text del textbox, que se supone que va a estar vacia... si no he entendido mal.

PD: Sobre el uso de Val ya ni lo vuelvo a comentar.

Saludos


Título: Re: De nuevo al ataque jeje no logro controlar que no me muestre lo que quiero
Publicado por: luis456 en 24 Octubre 2013, 19:53
@luis456

Si no estás escribiendo diréctamente sobre el Textbox, entonces porque te suscribes el evento TextChanged del textbox y porque intentas hacer las operacions de rango dentro de ese bloque?.

Es tan sencillo como que compruebes el rango del valor de la variable Result1 y según el rango que sea, asignas un valor u otro al Textbox7, no compares la propiedad Text del textbox, que se supone que va a estar vacia... si no he entendido mal.

PD: Sobre el uso de Val ya ni lo vuelvo a comentar.

Saludos


Porque como veras los texboxes se van llenando por las variables (por cierto este fue el codigo que me diste :) )

Código:
Public Class Form1
    Dim MIN As Integer = 0
    Dim MAX As Integer = 99

    Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.ControlBox = False ' Elimino todos los controles del formulario
    End Sub

   

    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
    Dim Sep As Object
    Dim texbox7 As Object
    Dim o As Object
    Private _val As Object
    Private _val1 As Integer
    Dim TextBox As TextBox()

    ReadOnly Property Num1 As Int32
        Get
            Return CInt(TextBox1.Text)
        End Get
    End Property

    ReadOnly Property Num2 As Int32
        Get
            Return CInt(TextBox2.Text)
        End Get
    End Property
    ReadOnly Property Num3 As Int32
        Get
            Return CInt(TextBox3.Text)
        End Get
    End Property


Private Property KeyAscii As Integer

    Private Property Val(ByVal form1 As Form1, ByVal p2 As Object) As Object
        Get
            Return _val
        End Get
        Set(ByVal value As Object)
            _val = value
        End Set
    End Property

    Private Property Val(ByVal p1 As Object) As Integer
        Get
            Return _val1
        End Get
        Set(ByVal value As Integer)
            _val1 = value
        End Set
    End Property

    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) _
    Handles Calcular.Click

        Dim TextBoxCount As Short = -1

        TextBox = {TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12, TextBox13, TextBox14, TextBox15, TextBox16, TextBox17, TextBox18, TextBox19, TextBox20, TextBox21, TextBox22, TextBox23, TextBox24, TextBox25, TextBox26, TextBox27, TextBox28, TextBox29, TextBox30, TextBox31, TextBox32, TextBox33, TextBox34, TextBox35, TextBox36, TextBox37, TextBox38, TextBox39, TextBox40, TextBox41, TextBox42, TextBox43, TextBox44, TextBox45, TextBox46, TextBox47, TextBox48, TextBox49, TextBox50, TextBox51, TextBox52, TextBox53, TextBox54, TextBox55, TextBox56, TextBox57, TextBox58, TextBox59, TextBox60}

        Result1 = {Num1 + 1, Num1 + 20, Num1 + 30} _
                  .Distinct().ToArray ' Elimino duplicados

        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
                  .Distinct().ToArray ' Elimino duplicados

        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
                  .Distinct().ToArray ' Elimino duplicados,,,,,,,,,,,

Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3)  ' Ordeno los Items

        ' funcion
        For Each Number As Int32 In Result1
            TextBoxCount += 1
            TextBox(TextBoxCount).Text = Number
        Next

        For Each Number As Int32 In Result2
            TextBoxCount += 1
            TextBox(TextBoxCount).Text = Number
        Next

        For Each Number As Int32 In Result3
            TextBoxCount += 1
            TextBox(TextBoxCount).Text = Number
        Next


End Class


Luis