Como podría ordenar de menor a mayor en este bloque de texbox ,ya que mando directo los datos ? se podría hacer con variables sin tener que usar matrices ?
y que no se repitan los números en los texbox y que si hay un repetido me lo supla con otro numero dentro de un rango de números ya establecido.
Pd: los números son aleatorios y no gobierno los resultados enviados a los texbox
TextBox27.Text = r5
TextBox28.Text = r5
TextBox29.Text = r5
TextBox30.Text = r5
Luis
En lugar de asignar diréctamente interactuando con las propiedades del Textbox, almacena los números en un tipo de colección, un array, o una lista, o una lista ordenada (SortedList), o lo que prefieras, y ordenas los elementos del objeto.
Private NumbersArray() As Int32
Array.Sort(NumbersArray)
Private NumbersList As New List(Of Int32)
NumbersList.Sort()
Private list As New SortedList
PD: La variable r5 no dices de que tipo es, aunque me imagino que es un entero, no somos magos, si especificas con más detalles lo que necesitas recibirás mejor ayuda, tienes alrededor de 30 textboxes y no se si los quieres ordenar para que aparezca cada número (un solo número) en cada textbox o que es lo que quieres hacer, muestra parte del código, detalles, información, imágenes.
EDITO: Eliminar duplicados de una colección también es facil (más usando Linq):
#Region " Remove Array Duplicates "
' Remove Array Duplicates
'
' // By Elektro H@cker
'
' Examples :
'
' Dim myarray(3) As String : myarray(0) = "a" : myarray(1) = "a" : myarray(2) = "b" : myarray(3) = "b"
' For Each item In Remove_Array_Duplicates(myarray) : MsgBox(item) : Next
Private Function Remove_Array_Duplicates(ByVal Myarray() As String) As String()
Return Myarray.Cast(Of String).Distinct().ToArray
End Function
#End Region
#Region " Remove List Duplicates "
' Remove List Duplicates
'
' // By Elektro H@cker
'
' Examples :
'
' Dim list As New List(Of String) From {"a", "a", "b", "b", "c", "c"}
' For Each item In Remove_List_Duplicates(list) : MsgBox(item) : Next
Private Function Remove_List_Duplicates(ByVal list As List(Of String)) As List(Of String)
Return list.Cast(Of String).Distinct().ToList
End Function
#End Region
Saludos!
Bien os pongo el codigo o la birria :)
tengo dos texbox numericos (r1 y r2) donde introdusco dos digitos y hago una suma y los reflejo en los texbox 3, 4, 5 y 6 segun los numeros que le introduscas ( Rango desde el 01 al 99 ) estos deberian ir de menor a mayor. y evitar los repetidos ya que al conseguir repetidos reenplazar por cualquier numero comprendido en el rango ( disculpen pero aprendi a programar cuando habia que escribir mucho codigo jjje)
Bien seria mas o menos la mecanica:
en texbox1 pongo el numero 20 y en el texbox2 pongo el 40 y esto me daria este resultado:
texbox1 introdusco el 20
20+15= 35 esto se muestra en el texbox3
20+25= 45 esto se muestra en el texbox4
texbox2 introdusco el 40
40+30= 70 esto se muestra en el texbox5
40+20= 60 esto se muestra en el texbox4 <--aca es que se deberia ver el 70
los texbox se muestran de esta manera
texbox3 y texbox4
texbox5 y texbox6
Public Class Form1
Dim Sep As Char
Dim Número As Double
Dim r1, r2 As Integer
Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
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 Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
r1 = Val(TextBox1.Text)
TextBox3.Text = r1 + 15
TextBox4.Text = r1 + 25
r2 = Val(TextBox2.Text)
TextBox5.Text = r2 + 30
TextBox6.Text = r2 + 20
End Sub
End Class
Pregunta : habra alguna forma mas facil de hacerlo jejejje ? o mostrar el resultado en un lisbox ya acomodado
Luis
(http://img46.imageshack.us/img46/2691/gm5q.png)
Public Class Form1
Private TextBoxes As TextBox() = {Nothing}
Private Result1 As Int32(), Result2 As Int32()
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
Private Sub Sumar(sender As Object, e As EventArgs) _
Handles Button_Sum.Click
Dim TextBoxCount As Short = -1
TextBoxes = {TextBox3, TextBox4, TextBox5, TextBox6}
Result1 = {Num1 + 15, Num1 + 25} _
.Distinct().ToArray ' Elimino duplicados
Result2 = {Num2 + 30, Num2 + 20} _
.Distinct().ToArray ' Elimino duplicados
Array.Sort(Result1) : Array.Sort(Result2) ' Ordeno los Items
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
End Sub
End Class
Adáptalo a tus necesidades.
PD: Porfavor te lo he comentado mil veces, deberías dejar de utilizar métodos de VB6 (Val), no estás en el obsoleto VB6, estás en VB.NET, pero bueno, que cada uno programe como desee!
Saludos!