Autor
|
Tema: Vuelvo al ataque con los texboxes :) evitar repe (Leído 9,363 veces)
|
luis456
Desconectado
Mensajes: 551
|
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 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
|
|
« Ú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
Desconectado
Mensajes: 9.878
|
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. Array.Sort...' Ordeno los Arrays ' Concateno todos los Arrays (esto es algo opcional, simplemente para hacerlo de una en este ejemplo) Dim Results As IEnumerable(Of Integer) = Result1.Concat(Result2).Concat(Result3) For X As Integer = 0 To Results.Count - 1 TextBoxCount += 1 Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any Case False ' El número no está repetido en ninguna "linea" ' Así que colocamos el número en el Textbox TextBox(TextBoxCount).Text = Convert.ToString(Results(X)) Case True ' El número está repetido en alguna de las "lineas" ' Así que haces lo que quieras con el Número/Textbox MsgBox(Results(X)) TextBox(TextBoxCount).Text = -1.ToString End Select 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
Mensajes: 551
|
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 Public Class Form1 Dim MIN As Integer = 0 Dim MAX As Integer = 99 Dim x As Integer <---------NO SE SI ES A SI 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 --------------------------ACA LO PUSE ' Concateno todos los Arrays (esto es algo opcional, simplemente para hacerlo de una en este ejemplo) Dim Results As IEnumerable(Of Integer) = Result1.Concat(Result2).Concat(Result3) For X As Integer = 0 To Results.Count - 1 TextBoxCount += 1 Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any Case False ' El número no está repetido en ninguna "linea" ' Así que colocamos el número en el Textbox TextBox(TextBoxCount).Text = Convert.ToString(Results(X)) Case True ' El número está repetido en alguna de las "lineas" ' Así que haces lo que quieras con el Número/Textbox MsgBox(Results(X)) TextBox(TextBoxCount).Text = -1.ToString End Select Next X ---------------------------------------------------------------------- ' 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 Private Function TextBox(ByVal TextBoxCount As Short) As Object Throw New NotImplementedException <--ERROR-Message=No se puede implementar el método o la operación. End Function 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
Mensajes: 122
|
Public Class Form1 Dim MIN As Integer = 0 Dim MAX As Integer = 99 Dim x As Integer <--------- Cambialo por Dim x as integer = 0 Private Function TextBox(ByVal TextBoxCount As Short) As Object Throw New NotImplementedException <--ERROR-Message=No se puede implementar el método o la operación. End Function 'A ver la parte de la funcion esta todo mal, todo xD 'Una funcion devuelve un valor, osea tiene un return '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. 'Borra la funcion por que no sirve de nada eso. End Class
|
|
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 551
|
Gracias Weeds Hice lo que me pusiste y sigue todo igual como dije antes solo que ahora el error me lo da 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
Desconectado
Mensajes: 9.878
|
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: Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3) ' Ordeno los Items --------------------------ACA LO PUSE ' Concateno todos los Arrays (esto es algo opcional, simplemente para hacerlo de una en este ejemplo) Dim Results As IEnumerable(Of Integer) = Result1.Concat(Result2).Concat(Result3) For X As Integer = 0 To Results.Count - 1 TextBoxCount += 1 Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any Case False ' El número no está repetido en ninguna "linea" ' Así que colocamos el número en el Textbox TextBox(TextBoxCount).Text = Convert.ToString(Results(X)) Case True ' El número está repetido en alguna de las "lineas" ' Así que haces lo que quieras con el Número/Textbox MsgBox(Results(X)) TextBox(TextBoxCount).Text = -1.ToString End Select Next X ---------------------------------------------------------------------- ' 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
¿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: 'Una funcion devuelve un valor, osea tiene un return 'Esta funcion no tiene un return
Ejemplo: MsgBox(Test("Hello World")) ' Result: dlroW olleH Private Function Test(ByVal str As String) As String Test = String.Join(String.Empty, str.Reverse) End Function
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
Mensajes: 551
|
Tiemblo cada ves que veo que Elektro me responde jejejej,bueno aca va Public Class Form1 Dim maximum As Short = 99 Dim x As Integer = 0 Dim Número As Double Private TextBoxes As TextBox() = {Nothing} Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32(), Result4 As Int32() Private _textBox As Object Private Property Calcular As Object Private Property TextBox(ByVal TextBoxCount As Short) As Object Get Return _textBox End Get Set(ByVal value As Object) _textBox = value End Set End Property ' trial----------------------------- Private Shadows Sub Load() Handles MyBase.Load My.Settings.contador += 1 checar() End Sub Sub checar() If My.Settings.contador >= 2500 Then MsgBox("Por motivos de seguridad este programa no se activara hasta que me la gana jejeje") 'Application.Exit() End If End Sub '--------------------- Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs) ' evitar letras If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False ElseIf Char.IsSeparator(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub 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 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 ReadOnly Property Num4 As Int32 Get Return CInt(TextBox4.Text) End Get End Property Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) _ Handles Button1.Click Dim TextBoxCount As Short = -1 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} Result1 = {Num1 + 10, 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 Result4 = {Num4 + 10, Num4 + 20, Num4 + 30} _ .Distinct().ToArray ' Elimino duplicados Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3) : Array.Sort(Result4) : Array.Sort(Result5) : Array.Sort(Result6) ' Ordeno los Items ' ---------------------------------------------------------------------------- ' aca que no salgan repetidos en las lineas ------------------------------------- ' Concateno todos los Arrays (esto es algo opcional, simplemente para hacerlo de una en este ejemplo) Dim Results As IEnumerable(Of Integer) = Result1.Concat(Result2).Concat(Result3).Concat(Result4) For X As Integer = 0 To Results.Count - 1 TextBoxCount += 1 Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any Case False ' El número no está repetido en ninguna "linea" ' Así que colocamos el número en el Textbox TextBox(TextBoxCount).Text = Convert.ToString(Results(X)) Case True ' El número está repetido en alguna de las "lineas" ' Así que haces lo que quieras con el Número/Textbox MsgBox(Results(X)) TextBox(TextBoxCount).Text = -1.ToString End Select Next X ' ----------------------------------------------------------------------- ' aca vamos con el rango For Each Number As Int32 In Result1 TextBoxCount += 1 TextBoxes(TextBoxCount).Text = Number Next ' ----------------------------------------- For Each Number As Int32 In Result2 TextBoxCount += 1 TextBoxes(TextBoxCount).Text = Number Next ' ----------------------------------------- For Each Number As Int32 In Result3 TextBoxCount += 1 If Not Number > maximum Then TextBoxes(TextBoxCount).Text = CStr(Number) Else TextBoxes(TextBoxCount).Text = CStr(maximum) End If Next Number ' ----------------------------------------- For Each Number As Int32 In Result4 TextBoxCount += 1 If Not Number > maximum Then TextBoxes(TextBoxCount).Text = CStr(Number) Else TextBoxes(TextBoxCount).Text = CStr(maximum) End If Next Number ' ----------------------------------------- End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub ' limpiar texboxes Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click For Each obj As Control In Me.Controls If (TypeOf obj Is TextBox) Then obj.Text = "" End If If (TypeOf obj Is GroupBox) Then For Each caja As Control In obj.Controls If (TypeOf caja Is TextBox) Then caja.Text = "" End If Next End If Next End Sub Private Sub TextBox7_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) ' solo numeros sin letras ni signos raros sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "") End Sub Private Sub TextBox8_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "") End Sub Private Sub TextBox9_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "") End Sub 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 sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "") End Sub 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 sender.text = System.Text.RegularExpressions.Regex.Replace(sender.text, "\D", "") End Sub 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 Button1.Enabled = ((TextBox1.TextLength > 0) And (TextBox2.TextLength > 0) And (TextBox3.TextLength > 0) And (TextBox4.TextLength > 0) )) solonumeros(e) If e.KeyChar = ChrW(Keys.Enter) Then e.Handled = True SendKeys.Send("{TAB}") End If End Sub 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
Desconectado
Mensajes: 9.878
|
símplemente elimina lo que te dije, todo esto: Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3) : Array.Sort(Result4) : Array.Sort(Result5) : Array.Sort(Result6) ' Ordeno los Items ' ---------------------------------------------------------------------------- ' aca que no salgan repetidos en las lineas ------------------------------------- ' Concateno todos los Arrays (esto es algo opcional, simplemente para hacerlo de una en este ejemplo) Dim Results As IEnumerable(Of Integer) = Result1.Concat(Result2).Concat(Result3).Concat(Result4) For X As Integer = 0 To Results.Count - 1 TextBoxCount += 1 Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any Case False ' El número no está repetido en ninguna "linea" ' Así que colocamos el número en el Textbox TextBox(TextBoxCount).Text = Convert.ToString(Results(X)) Case True ' El número está repetido en alguna de las "lineas" ' Así que haces lo que quieras con el Número/Textbox MsgBox(Results(X)) TextBox(TextBoxCount).Text = -1.ToString End Select Next X ' ----------------------------------------------------------------------- ' aca vamos con el rango For Each Number As Int32 In Result1 TextBoxCount += 1 TextBoxes(TextBoxCount).Text = Number Next ' ----------------------------------------- For Each Number As Int32 In Result2 TextBoxCount += 1 TextBoxes(TextBoxCount).Text = Number Next ' ----------------------------------------- For Each Number As Int32 In Result3 TextBoxCount += 1 If Not Number > maximum Then TextBoxes(TextBoxCount).Text = CStr(Number) Else TextBoxes(TextBoxCount).Text = CStr(maximum) End If Next Number ' ----------------------------------------- For Each Number As Int32 In Result4 TextBoxCount += 1 If Not Number > maximum Then TextBoxes(TextBoxCount).Text = CStr(Number) Else TextBoxes(TextBoxCount).Text = CStr(maximum) End If Next Number ' -----------------------------------------
Lo dejas así: Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3) Array.Sort(Result4) : Array.Sort(Result5) : Array.Sort(Result6) ' Ordeno los Items TextBoxCount = 0 ' Reseteo el valor a cero Dim Results As IEnumerable(Of Integer) = Result1.Concat(Result2).Concat(Result3).Concat(Result4) ' concateno arrays If Results.Count > TextBoxes.Count Then Throw New Exception("La cantidad de números es mayor que la cantidad de Textboxes") End If For X As Integer = 0 To Results.Count - 1 TextBoxCount += 1 Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any Case False ' El número no está repetido en ninguna "linea" ' Así que colocamos el número en el Textbox Try TextBoxes(TextBoxCount).Text = CStr(Results(X)) Catch ex As Exception Throw New Exception(ex.Message & ex.StackTrace) End Try Case True ' El número está repetido en alguna de las "lineas" ' Así que escribimos el número "máximo" en el textbox TextBoxes(TextBoxCount).Text = -CStr(maximum) End Select 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
Mensajes: 551
|
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 Public Class Form1 Dim maximum As Short = 99 Dim x As Integer = 0 Dim Número As Double Private TextBoxes As TextBox() = {Nothing} Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32(), Result4 As Int32() Private _textBox As Object Private Property Calcular As Object Private Property TextBox(ByVal TextBoxCount As Short) As Object Get Return _textBox End Get Set(ByVal value As Object) _textBox = value End Set End Property Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs) ' evitar letras If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False ElseIf Char.IsSeparator(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End Sub Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Me.ControlBox = False ' Elimino todos los controles del formulario End Sub 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 ReadOnly Property Num4 As Int32 Get Return CInt(TextBox4.Text) End Get End Property Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Dim TextBoxCount As Short = -1 TextBoxes = {TextBox5, TextBox6, TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12, TextBox13, TextBox14, TextBox15, TextBox16, TextBox17, TextBox18, TextBox19, TextBox20, TextBox21, TextBox22, TextBox23, TextBox24} Result1 = {Num1 + 10, 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 Result4 = {Num4 + 10, Num4 + 20, Num4 + 30} _ .Distinct().ToArray ' Elimino duplicados Array.Sort(Result1) : Array.Sort(Result2) : Array.Sort(Result3) Array.Sort(Result4) ' Ordeno los Items TextBoxCount = 0 ' Reseteo el valor a cero Dim Results As IEnumerable(Of Integer) = Result1.Concat(Result2).Concat(Result3).Concat(Result4) ' concateno arrays If Results.Count > TextBoxes.Count Then Throw New Exception("La cantidad de números es mayor que la cantidad de Textboxes") End If For X As Integer = 0 To Results.Count - 1 TextBoxCount += 1 Select Case Results.Where(Function(n) n = Results(X)).Skip(1).Any Case False ' El número no está repetido en ninguna "linea" ' Así que colocamos el número en el Textbox Try TextBoxes(TextBoxCount).Text = CStr(Results(X)) Catch ex As Exception Throw New Exception(ex.Message & ex.StackTrace) End Try Case True ' El número está repetido en alguna de las "lineas" ' Así que escribimos el número "máximo" en el textbox TextBoxes(TextBoxCount).Text = -CStr(maximum) End Select Next X End Sub 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
Desconectado
Mensajes: 9.878
|
Claro q no hace nada, fíjate en el método sumar: Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs)
Originálmente era: Private Sub Sumar(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Le quitaste la claúsula HandlesEDITO:y aquí lo mismo: Private Sub FrmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
...Handles mybase.loadRevisa todos los controladores de eventos de tú código y corrígelosSaludos!
|
|
« Última modificación: 4 Diciembre 2013, 20:46 pm por EleKtro H@cker »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como evitar un ataque DDoS y como experimentarlo en servidores reales?
Seguridad
|
Inspiron21
|
2
|
17,156
|
3 Septiembre 2010, 11:36 am
por Silici0
|
|
|
Alguna forma de evitar un ataque DoS?
Wireless en Linux
|
valdragas
|
3
|
4,487
|
29 Noviembre 2012, 11:12 am
por HalconEye
|
|
|
Evitar resultados repetidos cada 4 teboxes de una lista de texboxes consecutivas
.NET (C#, VB.NET, ASP)
|
luis456
|
4
|
3,111
|
3 Noviembre 2013, 15:21 pm
por Mitsu
|
|
|
¿Se puede evitar un ataque de desautenticación?
Hacking Wireless
|
Pablo Videla
|
3
|
6,769
|
29 Marzo 2015, 15:49 pm
por Pablo Videla
|
|