elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Vuelvo al ataque con los texboxes :) evitar repe
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Vuelvo al ataque con los texboxes :) evitar repe  (Leído 8,754 veces)
luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Vuelvo al ataque con los texboxes :) evitar repe
« en: 3 Diciembre 2013, 16:53 pm »

Bien gracias a Elketro jejej que me da una buena mano a pesar que estoy injertado con visual y net. bueno a lo mejor y nace un lenguaje de programacion nuevo jejeje.

Bien como veran en el codigo en que los resultados van entrando en los texboxes segun se hagan los calculos y estan numerados consecutivamente y estos texbosex los muestro en el formu en lineas de 4 en cuatro.


Texboses mostrados de esta forma
1   2  3  4
5   6  7  8
9 10 11 12

Bien mi problema es que no quiero que se repitan números en las lineas ??? y como estos se van llenando segun el calculo o suma he probado a intercalar los texboxes pero menuda chapuza jejeje.

Bueno el codigo

Código
  1. Public Class Form1
  2.    Dim MIN As Integer = 0
  3.    Dim MAX As Integer = 99
  4.  
  5.    Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.        Me.ControlBox = False ' Elimino todos los controles del formulario
  7.    End Sub
  8.  
  9.  
  10.  
  11.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
  12.    Dim Sep As Object
  13.    Dim texbox7 As Object
  14.    Dim o As Object
  15.    Private _val As Object
  16.    Private _val1 As Integer
  17.    Dim TextBox As TextBox()
  18.  
  19.    ReadOnly Property Num1 As Int32
  20.        Get
  21.            Return CInt(TextBox1.Text)
  22.        End Get
  23.    End Property
  24.  
  25.    ReadOnly Property Num2 As Int32
  26.        Get
  27.            Return CInt(TextBox2.Text)
  28.        End Get
  29.    End Property
  30.    ReadOnly Property Num3 As Int32
  31.        Get
  32.            Return CInt(TextBox3.Text)
  33.        End Get
  34.    End Property
  35.  
  36.  
  37. Private Property KeyAscii As Integer
  38.  
  39.    Private Property Val(ByVal form1 As Form1, ByVal p2 As Object) As Object
  40.        Get
  41.            Return _val
  42.        End Get
  43.        Set(ByVal value As Object)
  44.            _val = value
  45.        End Set
  46.    End Property
  47.  
  48.    Private Property Val(ByVal p1 As Object) As Integer
  49.        Get
  50.            Return _val1
  51.        End Get
  52.        Set(ByVal value As Integer)
  53.            _val1 = value
  54.        End Set
  55.    End Property
  56.  
  57.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) _
  58.    Handles Calcular.Click
  59.  
  60.        Dim TextBoxCount As Short = -1
  61.  
  62.        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}
  63.  
  64.        Result1 = {Num1 + 1, Num1 + 20, Num1 + 30} _
  65.                  .Distinct().ToArray ' Elimino duplicados
  66.  
  67.        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
  68.                  .Distinct().ToArray ' Elimino duplicados
  69.  
  70.        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
  71.                  .Distinct().ToArray ' Elimino duplicados
  72.  
  73. Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3)  ' Ordeno los Items
  74.  
  75.        ' funcion
  76.        For Each Number As Int32 In Result1
  77.            TextBoxCount += 1
  78.            TextBox(TextBoxCount).Text = Number
  79.        Next
  80.  
  81.        For Each Number As Int32 In Result2
  82.            TextBoxCount += 1
  83.            TextBox(TextBoxCount).Text = Number
  84.        Next
  85.  
  86.        For Each Number As Int32 In Result3
  87.            TextBoxCount += 1
  88.            TextBox(TextBoxCount).Text = Number
  89.        Next
  90.  
  91.  
  92. End Class


Luis






« Última modificación: 3 Diciembre 2013, 17:21 pm por EleKtro H@cker » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.818



Ver Perfil
Re: Vuelvo al ataque con los texboxes :) evitar repe
« Respuesta #1 en: 3 Diciembre 2013, 17:58 pm »

Admirable insistencia,
no se cuantas veces se habrá hablado sobre el tema de los textboxes, se te dieron varias soluciones distintas por parte de varios usuarios (si no recuerdo mal).
Veo que estás usando un código que te mostré, con pequeñas variaciones.

Podrías hacer algo así, desde la linea del Array.Sort, esto reemplazaría a los 3 búcles que usas.
Código
  1.        Array.Sort...' Ordeno los Arrays
  2.  
  3.        ' Concateno todos los Arrays (esto es algo opcional, simplemente para hacerlo de una en este ejemplo)
  4.        Dim Results As IEnumerable(Of Integer) =
  5.            Result1.Concat(Result2).Concat(Result3)
  6.  
  7.        For X As Integer = 0 To Results.Count - 1
  8.  
  9.            TextBoxCount += 1
  10.  
  11.            Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any
  12.  
  13.                Case False ' El número no está repetido en ninguna "linea"
  14.                    ' Así que colocamos el número en el Textbox
  15.                    TextBox(TextBoxCount).Text = Convert.ToString(Results(X))
  16.  
  17.                Case True ' El número está repetido en alguna de las "lineas"
  18.                    ' Así que haces lo que quieras con el Número/Textbox
  19.                    MsgBox(Results(X))
  20.                    TextBox(TextBoxCount).Text = -1.ToString
  21.  
  22.            End Select
  23.  
  24.        Next X

PD: Fíjate bien, el código comprueba si hay duplicados en el array "unido", es decir, en lo que serian todas las lineas de textboxes a la vez, no linea por linea, no se como lo quieres asi que eso he preferido dejarlo a tu elección... de todas formas para eso solo tendrías que hacer el mismo procedimiento 3 veces, quiero decir con cada array por separado, no con un array unido, vamos, lo mismo que haces en el código que has mostrado con los 3 búcles, tampoco lo voy a dar todo regalado xD, tu puedes hacer esa modificación.

Saludos!


« Última modificación: 3 Diciembre 2013, 18:14 pm por EleKtro H@cker » En línea

luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Vuelvo al ataque con los texboxes :) evitar repe
« Respuesta #2 en: 4 Diciembre 2013, 18:37 pm »

Bueno despues de estar enredado con esto y que la pc me escupa ejjeje no se ya donde buscar pues el programa en el editor antes de ejecutarlo no me da error pero al ejecutarlo todo parece bien pero cuando hago la funcion BINGO

Message=No se puede implementar el método o la operación.


Lo puse de esta forma


Código
  1. Public Class Form1
  2.    Dim MIN As Integer = 0
  3.    Dim MAX As Integer = 99
  4.    Dim x As Integer <---------NO SE SI ES A SI
  5.  
  6.  
  7.    Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  8.        Me.ControlBox = False ' Elimino todos los controles del formulario
  9.    End Sub
  10.  
  11.  
  12.  
  13.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32()
  14.    Dim Sep As Object
  15.    Dim texbox7 As Object
  16.    Dim o As Object
  17.    Private _val As Object
  18.    Private _val1 As Integer
  19.    Dim TextBox As TextBox()
  20.  
  21.    ReadOnly Property Num1 As Int32
  22.        Get
  23.            Return CInt(TextBox1.Text)
  24.        End Get
  25.    End Property
  26.  
  27.    ReadOnly Property Num2 As Int32
  28.        Get
  29.            Return CInt(TextBox2.Text)
  30.        End Get
  31.    End Property
  32.    ReadOnly Property Num3 As Int32
  33.        Get
  34.            Return CInt(TextBox3.Text)
  35.        End Get
  36.    End Property
  37.  
  38.  
  39. Private Property KeyAscii As Integer
  40.  
  41.    Private Property Val(ByVal form1 As Form1, ByVal p2 As Object) As Object
  42.        Get
  43.            Return _val
  44.        End Get
  45.        Set(ByVal value As Object)
  46.            _val = value
  47.        End Set
  48.    End Property
  49.  
  50.    Private Property Val(ByVal p1 As Object) As Integer
  51.        Get
  52.            Return _val1
  53.        End Get
  54.        Set(ByVal value As Integer)
  55.            _val1 = value
  56.        End Set
  57.    End Property
  58.  
  59.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) _
  60.    Handles Calcular.Click
  61.  
  62.        Dim TextBoxCount As Short = -1
  63.  
  64.        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}
  65.  
  66.        Result1 = {Num1 + 1, Num1 + 20, Num1 + 30} _
  67.                  .Distinct().ToArray ' Elimino duplicados
  68.  
  69.        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
  70.                  .Distinct().ToArray ' Elimino duplicados
  71.  
  72.        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
  73.                  .Distinct().ToArray ' Elimino duplicados
  74.  
  75. Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3)  ' Ordeno los Items
  76.  
  77. --------------------------ACA LO PUSE
  78. ' Concateno todos los Arrays (esto es algo opcional, simplemente para hacerlo de una en este ejemplo)
  79.        Dim Results As IEnumerable(Of Integer) =
  80.            Result1.Concat(Result2).Concat(Result3)
  81.  
  82.        For X As Integer = 0 To Results.Count - 1
  83.  
  84.            TextBoxCount += 1
  85.  
  86.            Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any
  87.  
  88.                Case False ' El número no está repetido en ninguna "linea"
  89.                    ' Así que colocamos el número en el Textbox
  90.                    TextBox(TextBoxCount).Text = Convert.ToString(Results(X))
  91.  
  92.                Case True ' El número está repetido en alguna de las "lineas"
  93.                    ' Así que haces lo que quieras con el Número/Textbox
  94.                    MsgBox(Results(X))
  95.                    TextBox(TextBoxCount).Text = -1.ToString
  96.  
  97.            End Select
  98.  
  99.        Next X
  100.  
  101.  
  102. ----------------------------------------------------------------------
  103.        ' funcion
  104.        For Each Number As Int32 In Result1
  105.            TextBoxCount += 1
  106.            TextBox(TextBoxCount).Text = Number
  107.        Next
  108.  
  109.        For Each Number As Int32 In Result2
  110.            TextBoxCount += 1
  111.            TextBox(TextBoxCount).Text = Number
  112.        Next
  113.  
  114.        For Each Number As Int32 In Result3
  115.            TextBoxCount += 1
  116.            TextBox(TextBoxCount).Text = Number
  117.        Next
  118.  
  119.   Private Function TextBox(ByVal TextBoxCount As Short) As Object
  120.        Throw New NotImplementedException <--ERROR-Message=No se puede implementar el método o la operación.
  121.    End Function
  122.  
  123. End Class


Lo siento Elektro jejeje estoy tapao

Luis

« Última modificación: 4 Diciembre 2013, 19:17 pm por EleKtro H@cker » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
.:Weeds:.

Desconectado Desconectado

Mensajes: 122



Ver Perfil
Re: Vuelvo al ataque con los texboxes :) evitar repe
« Respuesta #3 en: 4 Diciembre 2013, 18:51 pm »

Código
  1. Public Class Form1
  2.    Dim MIN As Integer = 0
  3.    Dim MAX As Integer = 99
  4.  
  5.    Dim x As Integer <--------- Cambialo por Dim x as integer = 0
  6.  
  7.  
  8.   Private Function TextBox(ByVal TextBoxCount As Short) As Object
  9.        Throw New NotImplementedException <--ERROR-Message=No se puede implementar el método o la operación.
  10.    End Function
  11.   'A ver la parte de la funcion esta todo mal, todo xD
  12.   'Una funcion devuelve un valor, osea tiene un return
  13.   'Esta funcion no tiene un return y para colmo dentro pones un throw que va en el catch de un try, el compilador se debe de haber asustado y todo por intentar tal cosa.
  14.   'Borra la funcion por que no sirve de nada eso.
  15.  
  16. End Class

En línea


luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Vuelvo al ataque con los texboxes :) evitar repe
« Respuesta #4 en: 4 Diciembre 2013, 19:05 pm »

Gracias Weeds

Hice lo que me pusiste y sigue todo igual como dije antes solo que ahora el error me lo da

Código:
TextBox(TextBoxCount).Text = Convert.ToString(Results(X))

"""""" Variable de objeto o de bloque With no establecida.  ????????'


luis
En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.818



Ver Perfil
Re: Vuelvo al ataque con los texboxes :) evitar repe
« Respuesta #5 en: 4 Diciembre 2013, 19:27 pm »

Cito mis palabras:

Podrías hacer algo así, desde la linea del Array.Sort, esto reemplazaría a los 3 búcles que usas.

Cito tú último código:


Código
  1. Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3)  ' Ordeno los Items
  2.  
  3. --------------------------ACA LO PUSE
  4. ' Concateno todos los Arrays (esto es algo opcional, simplemente para hacerlo de una en este ejemplo)
  5.        Dim Results As IEnumerable(Of Integer) =
  6.            Result1.Concat(Result2).Concat(Result3)
  7.  
  8.        For X As Integer = 0 To Results.Count - 1
  9.  
  10.            TextBoxCount += 1
  11.  
  12.            Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any
  13.  
  14.                Case False ' El número no está repetido en ninguna "linea"
  15.                    ' Así que colocamos el número en el Textbox
  16.                    TextBox(TextBoxCount).Text = Convert.ToString(Results(X))
  17.  
  18.                Case True ' El número está repetido en alguna de las "lineas"
  19.                    ' Así que haces lo que quieras con el Número/Textbox
  20.                    MsgBox(Results(X))
  21.                    TextBox(TextBoxCount).Text = -1.ToString
  22.  
  23.            End Select
  24.  
  25.        Next X
  26.  
  27.  
  28. ----------------------------------------------------------------------
  29.        ' funcion
  30.        For Each Number As Int32 In Result1
  31.            TextBoxCount += 1
  32.            TextBox(TextBoxCount).Text = Number
  33.        Next
  34.  
  35.        For Each Number As Int32 In Result2
  36.            TextBoxCount += 1
  37.            TextBox(TextBoxCount).Text = Number
  38.        Next
  39.  
  40.        For Each Number As Int32 In Result3
  41.            TextBoxCount += 1
  42.            TextBox(TextBoxCount).Text = Number
  43.        Next

¿Que falla ahí?, que sigues utilizando esos 3 For each, elimínalos.



EDITO:

Sobre la misteriosa incoherente función, no tengo nada que añadir, solo quiero hacer referencia a estas líneas de comentario con la intención de aclarar (a los que no lo sepan) que una función no necesita usar explícitamente la declaración Return para devolver un valor, aunque, porsupuesto esto no está bien visto, solo lo comento:

Código
  1.   'Una funcion devuelve un valor, osea tiene un return
  2.   'Esta funcion no tiene un return

Ejemplo:
Código
  1. MsgBox(Test("Hello World")) ' Result: dlroW olleH
  2.  
  3. Private Function Test(ByVal str As String) As String
  4.     Test = String.Join(String.Empty, str.Reverse)
  5. End Function



Código:
TextBox(TextBoxCount).Text = Convert.ToString(Results(X))

"""""" Variable de objeto o de bloque With no establecida.  ????????'

postea la Class entera para examinarla, porque en el anterior código el bloque del método "Sumar" lo dejas abierto, y además adentro del bloque añades una función (¿?), no creo que el código original sea tal y como lo mostraste xD.

Saludos
« Última modificación: 4 Diciembre 2013, 19:49 pm por EleKtro H@cker » En línea

luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Vuelvo al ataque con los texboxes :) evitar repe
« Respuesta #6 en: 4 Diciembre 2013, 19:47 pm »

Tiemblo cada ves que veo que Elektro me responde jejejej,bueno aca va


Código
  1. Public Class Form1
  2.  
  3.    Dim maximum As Short = 99
  4.    Dim x As Integer = 0
  5.    Dim Número As Double
  6.    Private TextBoxes As TextBox() = {Nothing}
  7.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32(), Result4 As Int32()
  8.    Private _textBox As Object
  9.  
  10.    Private Property Calcular As Object
  11.  
  12.    Private Property TextBox(ByVal TextBoxCount As Short) As Object
  13.        Get
  14.            Return _textBox
  15.        End Get
  16.        Set(ByVal value As Object)
  17.            _textBox = value
  18.        End Set
  19.    End Property
  20.    ' trial-----------------------------
  21.  
  22.    Private Shadows Sub Load() Handles MyBase.Load
  23.        My.Settings.contador += 1
  24.        checar()
  25.    End Sub
  26.  
  27.    Sub checar()
  28.  
  29.        If My.Settings.contador >= 2500 Then
  30.            MsgBox("Por motivos de seguridad este programa no se activara hasta que me la gana jejeje")
  31.            'Application.Exit()
  32.        End If
  33.  
  34.    End Sub
  35.    '---------------------
  36.    Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
  37.        ' evitar letras
  38.        If Char.IsDigit(e.KeyChar) Then
  39.            e.Handled = False
  40.        ElseIf Char.IsControl(e.KeyChar) Then
  41.            e.Handled = False
  42.        ElseIf Char.IsSeparator(e.KeyChar) Then
  43.            e.Handled = False
  44.        Else
  45.            e.Handled = True
  46.        End If
  47.  
  48.    End Sub
  49.  
  50.    Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  51.        Me.ControlBox = False ' Elimino todos los controles del formulario
  52.    End Sub
  53.    ReadOnly Property Num1 As Int32
  54.        Get
  55.            Return CInt(TextBox1.Text)
  56.        End Get
  57.    End Property
  58.  
  59.    ReadOnly Property Num2 As Int32
  60.        Get
  61.            Return CInt(TextBox2.Text)
  62.        End Get
  63.    End Property
  64.    ReadOnly Property Num3 As Int32
  65.        Get
  66.            Return CInt(TextBox3.Text)
  67.        End Get
  68.    End Property
  69.    ReadOnly Property Num4 As Int32
  70.        Get
  71.            Return CInt(TextBox4.Text)
  72.        End Get
  73.    End Property
  74.  
  75.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) _
  76.    Handles Button1.Click
  77.  
  78.  
  79.        Dim TextBoxCount As Short = -1
  80.  
  81.        TextBoxes = {TextBox5, TextBox6, TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12, TextBox13, TextBox14, TextBox15, TextBox16, TextBox17, TextBox18, TextBox19, TextBox20, TextBox21, TextBox22, TextBox23, TextBox24, TextBox25, TextBox26, TextBox27, TextBox28, TextBox29, TextBox29, TextBox30, TextBox31, TextBox32, TextBox33, TextBox34, TextBox35, TextBox36, TextBox37, TextBox38, TextBox39, TextBox40, TextBox41, TextBox42}
  82.  
  83.        Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
  84.                  .Distinct().ToArray ' Elimino duplicados
  85.  
  86.        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
  87.                  .Distinct().ToArray ' Elimino duplicados
  88.  
  89.        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
  90.                  .Distinct().ToArray ' Elimino duplicados
  91.  
  92.        Result4 = {Num4 + 10, Num4 + 20, Num4 + 30} _
  93.                  .Distinct().ToArray ' Elimino duplicados
  94.  
  95.  
  96.  
  97.        Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3) : Array.Sort(Result4) : Array.Sort(Result5) : Array.Sort(Result6)  ' Ordeno los Items
  98.        ' ----------------------------------------------------------------------------
  99.        ' aca que no salgan repetidos en las lineas -------------------------------------
  100.        ' Concateno todos los Arrays (esto es algo opcional, simplemente para hacerlo de una en este ejemplo)
  101.        Dim Results As IEnumerable(Of Integer) =
  102.            Result1.Concat(Result2).Concat(Result3).Concat(Result4)
  103.  
  104.        For X As Integer = 0 To Results.Count - 1
  105.  
  106.  
  107.  
  108.            TextBoxCount += 1
  109.  
  110.            Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any
  111.  
  112.                Case False ' El número no está repetido en ninguna "linea"
  113.                    ' Así que colocamos el número en el Textbox
  114.                    TextBox(TextBoxCount).Text = Convert.ToString(Results(X))
  115.  
  116.                Case True ' El número está repetido en alguna de las "lineas"
  117.                    ' Así que haces lo que quieras con el Número/Textbox
  118.                    MsgBox(Results(X))
  119.                    TextBox(TextBoxCount).Text = -1.ToString
  120.  
  121.            End Select
  122.        Next X
  123.        ' -----------------------------------------------------------------------
  124.  
  125.        ' aca vamos con el rango
  126.  
  127.        For Each Number As Int32 In Result1
  128.            TextBoxCount += 1
  129.            TextBoxes(TextBoxCount).Text = Number
  130.        Next
  131.        ' -----------------------------------------
  132.        For Each Number As Int32 In Result2
  133.            TextBoxCount += 1
  134.            TextBoxes(TextBoxCount).Text = Number
  135.        Next
  136.        ' -----------------------------------------
  137.        For Each Number As Int32 In Result3
  138.  
  139.            TextBoxCount += 1
  140.  
  141.            If Not Number > maximum Then
  142.                TextBoxes(TextBoxCount).Text = CStr(Number)
  143.            Else
  144.                TextBoxes(TextBoxCount).Text = CStr(maximum)
  145.            End If
  146.  
  147.        Next Number
  148.        ' -----------------------------------------
  149.        For Each Number As Int32 In Result4
  150.  
  151.            TextBoxCount += 1
  152.  
  153.            If Not Number > maximum Then
  154.                TextBoxes(TextBoxCount).Text = CStr(Number)
  155.            Else
  156.                TextBoxes(TextBoxCount).Text = CStr(maximum)
  157.            End If
  158.  
  159.        Next Number
  160.        ' -----------------------------------------
  161.  
  162.    End Sub
  163.  
  164.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  165.  
  166.    End Sub
  167.  
  168.  
  169.    ' limpiar texboxes
  170.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  171.        For Each obj As Control In Me.Controls
  172.            If (TypeOf obj Is TextBox) Then
  173.                obj.Text = ""
  174.            End If
  175.            If (TypeOf obj Is GroupBox) Then
  176.                For Each caja As Control In obj.Controls
  177.                    If (TypeOf caja Is TextBox) Then
  178.                        caja.Text = ""
  179.                    End If
  180.                Next
  181.            End If
  182.        Next
  183.    End Sub
  184.  
  185.    Private Sub TextBox7_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
  186.        ' solo numeros sin letras ni signos raros
  187.        sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "")
  188.    End Sub
  189.  
  190.    Private Sub TextBox8_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
  191.        sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "")
  192.    End Sub
  193.  
  194.    Private Sub TextBox9_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
  195.        sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "")
  196.    End Sub
  197.  
  198.    Private Sub TextBox25_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox9.TextChanged, TextBox8.TextChanged, TextBox7.TextChanged, TextBox30.TextChanged, TextBox29.TextChanged, TextBox28.TextChanged, TextBox27.TextChanged, TextBox26.TextChanged, TextBox25.TextChanged, TextBox24.TextChanged, TextBox23.TextChanged, TextBox22.TextChanged, TextBox21.TextChanged, TextBox20.TextChanged, TextBox19.TextChanged, TextBox18.TextChanged, TextBox17.TextChanged, TextBox16.TextChanged, TextBox15.TextChanged, TextBox14.TextChanged, TextBox13.TextChanged, TextBox12.TextChanged, TextBox11.TextChanged, TextBox10.TextChanged
  199.        sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "")
  200.    End Sub
  201.  
  202.    Private Sub TextBox31_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox36.TextChanged, TextBox35.TextChanged, TextBox34.TextChanged, TextBox33.TextChanged, TextBox32.TextChanged, TextBox31.TextChanged
  203.        sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "")
  204.    End Sub
  205.  
  206.    Private Sub TextBox6_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress, TextBox3.KeyPress, TextBox2.KeyPress, TextBox1.KeyPress
  207.        Button1.Enabled = ((TextBox1.TextLength > 0) And (TextBox2.TextLength > 0) And (TextBox3.TextLength > 0) And (TextBox4.TextLength > 0) ))
  208.        solonumeros(e)
  209.        If e.KeyChar = ChrW(Keys.Enter) Then
  210.            e.Handled = True
  211.            SendKeys.Send("{TAB}")
  212.  
  213.        End If
  214.  
  215.  
  216.    End Sub
  217. End Class]
« Última modificación: 4 Diciembre 2013, 19:51 pm por EleKtro H@cker » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.818



Ver Perfil
Re: Vuelvo al ataque con los texboxes :) evitar repe
« Respuesta #7 en: 4 Diciembre 2013, 19:59 pm »

símplemente elimina lo que te dije, todo esto:

Citar
Código
  1.  
  2.       Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3) : Array.Sort(Result4) : Array.Sort(Result5) : Array.Sort(Result6)  ' Ordeno los Items
  3.       ' ----------------------------------------------------------------------------
  4.       ' aca que no salgan repetidos en las lineas -------------------------------------
  5.       ' Concateno todos los Arrays (esto es algo opcional, simplemente para hacerlo de una en este ejemplo)
  6.       Dim Results As IEnumerable(Of Integer) =
  7.           Result1.Concat(Result2).Concat(Result3).Concat(Result4)
  8.  
  9.       For X As Integer = 0 To Results.Count - 1
  10.  
  11.  
  12.  
  13.           TextBoxCount += 1
  14.  
  15.           Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any
  16.  
  17.               Case False ' El número no está repetido en ninguna "linea"
  18.                   ' Así que colocamos el número en el Textbox
  19.                   TextBox(TextBoxCount).Text = Convert.ToString(Results(X))
  20.  
  21.               Case True ' El número está repetido en alguna de las "lineas"
  22.                   ' Así que haces lo que quieras con el Número/Textbox
  23.                   MsgBox(Results(X))
  24.                   TextBox(TextBoxCount).Text = -1.ToString
  25.  
  26.           End Select
  27.       Next X
  28.       ' -----------------------------------------------------------------------
  29.  
  30.       ' aca vamos con el rango
  31.  
  32.       For Each Number As Int32 In Result1
  33.           TextBoxCount += 1
  34.           TextBoxes(TextBoxCount).Text = Number
  35.       Next
  36.       ' -----------------------------------------
  37.       For Each Number As Int32 In Result2
  38.           TextBoxCount += 1
  39.           TextBoxes(TextBoxCount).Text = Number
  40.       Next
  41.       ' -----------------------------------------
  42.       For Each Number As Int32 In Result3
  43.  
  44.           TextBoxCount += 1
  45.  
  46.           If Not Number > maximum Then
  47.               TextBoxes(TextBoxCount).Text = CStr(Number)
  48.           Else
  49.               TextBoxes(TextBoxCount).Text = CStr(maximum)
  50.           End If
  51.  
  52.       Next Number
  53.       ' -----------------------------------------
  54.       For Each Number As Int32 In Result4
  55.  
  56.           TextBoxCount += 1
  57.  
  58.           If Not Number > maximum Then
  59.               TextBoxes(TextBoxCount).Text = CStr(Number)
  60.           Else
  61.               TextBoxes(TextBoxCount).Text = CStr(maximum)
  62.           End If
  63.  
  64.       Next Number
  65.       ' -----------------------------------------

Lo dejas así:

Código
  1.  
  2.        Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3)
  3.        Array.Sort(Result4) : Array.Sort(Result5) : Array.Sort(Result6)  ' Ordeno los Items
  4.  
  5.        TextBoxCount = 0 ' Reseteo el valor a cero
  6.  
  7.        Dim Results As IEnumerable(Of Integer) =
  8.            Result1.Concat(Result2).Concat(Result3).Concat(Result4) ' concateno arrays
  9.  
  10.        If Results.Count > TextBoxes.Count Then
  11.            Throw New Exception("La cantidad de números es mayor que la cantidad de Textboxes")
  12.        End If
  13.  
  14.        For X As Integer = 0 To Results.Count - 1
  15.  
  16.            TextBoxCount += 1
  17.  
  18.            Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any
  19.  
  20.                Case False ' El número no está repetido en ninguna "linea"
  21.                    ' Así que colocamos el número en el Textbox
  22.                    Try
  23.                        TextBoxes(TextBoxCount).Text = CStr(Results(X))
  24.                    Catch ex As Exception
  25.                        Throw New Exception(ex.Message & ex.StackTrace)
  26.                    End Try
  27.  
  28.                Case True ' El número está repetido en alguna de las "lineas"
  29.                    ' Así que escribimos el número "máximo" en el textbox
  30.                    TextBoxes(TextBoxCount).Text = -CStr(maximum)
  31.  
  32.            End Select
  33.  
  34.        Next X

Si te da error, muestra el detalle del error.

Saludos!
« Última modificación: 4 Diciembre 2013, 20:04 pm por EleKtro H@cker » En línea

luis456


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Re: Vuelvo al ataque con los texboxes :) evitar repe
« Respuesta #8 en: 4 Diciembre 2013, 20:27 pm »

No da error pero no hace nada se ejecuta pero no me muestra resultados he limpiado un poco el codigo lo deje a si pero ya me mareo

Código
  1. Public Class Form1
  2.  
  3.    Dim maximum As Short = 99
  4.    Dim x As Integer = 0
  5.    Dim Número As Double
  6.    Private TextBoxes As TextBox() = {Nothing}
  7.    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32(), Result4 As Int32()
  8.    Private _textBox As Object
  9.  
  10.    Private Property Calcular As Object
  11.  
  12.    Private Property TextBox(ByVal TextBoxCount As Short) As Object
  13.        Get
  14.            Return _textBox
  15.        End Get
  16.        Set(ByVal value As Object)
  17.            _textBox = value
  18.        End Set
  19.    End Property
  20.  
  21.    Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
  22.        ' evitar letras
  23.        If Char.IsDigit(e.KeyChar) Then
  24.            e.Handled = False
  25.        ElseIf Char.IsControl(e.KeyChar) Then
  26.            e.Handled = False
  27.        ElseIf Char.IsSeparator(e.KeyChar) Then
  28.            e.Handled = False
  29.        Else
  30.            e.Handled = True
  31.        End If
  32.  
  33.    End Sub
  34.  
  35.    Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
  36.        Me.ControlBox = False ' Elimino todos los controles del formulario
  37.    End Sub
  38.    ReadOnly Property Num1 As Int32
  39.        Get
  40.            Return CInt(TextBox1.Text)
  41.        End Get
  42.    End Property
  43.  
  44.    ReadOnly Property Num2 As Int32
  45.        Get
  46.            Return CInt(TextBox2.Text)
  47.        End Get
  48.    End Property
  49.    ReadOnly Property Num3 As Int32
  50.        Get
  51.            Return CInt(TextBox3.Text)
  52.        End Get
  53.    End Property
  54.    ReadOnly Property Num4 As Int32
  55.        Get
  56.            Return CInt(TextBox4.Text)
  57.        End Get
  58.    End Property
  59.  
  60.    Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs)
  61.  
  62.  
  63.  
  64.        Dim TextBoxCount As Short = -1
  65.  
  66.        TextBoxes = {TextBox5, TextBox6, TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12, TextBox13, TextBox14, TextBox15, TextBox16, TextBox17, TextBox18, TextBox19, TextBox20, TextBox21, TextBox22, TextBox23, TextBox24}
  67.  
  68.        Result1 = {Num1 + 10, Num1 + 20, Num1 + 30} _
  69.                  .Distinct().ToArray ' Elimino duplicados
  70.  
  71.        Result2 = {Num2 + 10, Num2 + 20, Num2 + 30} _
  72.                  .Distinct().ToArray ' Elimino duplicados
  73.  
  74.        Result3 = {Num3 + 10, Num3 + 20, Num3 + 30} _
  75.                  .Distinct().ToArray ' Elimino duplicados
  76.  
  77.        Result4 = {Num4 + 10, Num4 + 20, Num4 + 30} _
  78.                  .Distinct().ToArray ' Elimino duplicados
  79.  
  80.  
  81.  
  82.        Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3)
  83.        Array.Sort(Result4)   ' Ordeno los Items
  84.  
  85.        TextBoxCount = 0 ' Reseteo el valor a cero
  86.  
  87.        Dim Results As IEnumerable(Of Integer) =
  88.            Result1.Concat(Result2).Concat(Result3).Concat(Result4) ' concateno arrays
  89.  
  90.        If Results.Count > TextBoxes.Count Then
  91.            Throw New Exception("La cantidad de números es mayor que la cantidad de Textboxes")
  92.        End If
  93.  
  94.        For X As Integer = 0 To Results.Count - 1
  95.  
  96.            TextBoxCount += 1
  97.  
  98.            Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any
  99.  
  100.                Case False ' El número no está repetido en ninguna "linea"
  101.                    ' Así que colocamos el número en el Textbox
  102.                    Try
  103.                        TextBoxes(TextBoxCount).Text = CStr(Results(X))
  104.                    Catch ex As Exception
  105.                        Throw New Exception(ex.Message & ex.StackTrace)
  106.                    End Try
  107.  
  108.                Case True ' El número está repetido en alguna de las "lineas"
  109.                    ' Así que escribimos el número "máximo" en el textbox
  110.                    TextBoxes(TextBoxCount).Text = -CStr(maximum)
  111.  
  112.            End Select
  113.  
  114.        Next X
  115.  
  116.    End Sub
  117. End Class

« Última modificación: 4 Diciembre 2013, 20:39 pm por EleKtro H@cker » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Conectado Conectado

Mensajes: 9.818



Ver Perfil
Re: Vuelvo al ataque con los texboxes :) evitar repe
« Respuesta #9 en: 4 Diciembre 2013, 20:41 pm »

Claro q no hace nada, fíjate en el método sumar:

Citar
Código
  1. Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs)

Originálmente era:
Citar
Código
  1. Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

Le quitaste la claúsula Handles

EDITO:
y aquí lo mismo:
Citar
Código
  1. Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

...Handles mybase.load

Revisa todos los controladores de eventos de tú código y corrígelos

Saludos!
« Última modificación: 4 Diciembre 2013, 20:46 pm por EleKtro H@cker » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines