Controles en Visual Basic .Net Fecha: 11/Dic/2004 (10 de Diciembre de 2004) Emails: [email protected] – [email protected] - [email protected]
|
El presente trabajo pretende colaborar con el conocimiento de Visual Basic .Net y de las opciones nuevas de los controles CheckedListBox (nuevo en Visual Basic .Net), TabControl, que es similar a los anteriores SSTaB y TabStrip de VisualBasic 6.0 y de las opciones de ListBox
Un poco de teoría
El Control CheckedListBox
El control CheckedListBox muestra una lista de elementos similar a un control ListBox, pero cada elemento tienen la apariencia de una casilla de verificación o control CheckBox. El control CheckedListBox puede enlazarse a datos por medio de la propiedad DataSource al igual que los controles ComboBox y ListBox, debe establecerse el nombre de una columna del origen de datos a la propiedad DisplayMember. El código suponiendo que el CheckedListBox se llama chklProductos de la Tabla dtProductos del DataSet dsDatos y la columna es NombreProducto es:
chklProductos.DataSource = dsDatos.Tables("dtProductos")
chklProductos.DisplayMember = "NombreProducto"El control CheckedListBox al igual que el control ListBox tienen la colección Items a la que se le agrega elementos, puede ser individualmente o de manera grupal con un arreglo o matriz. Por ejemplo:
Para agregar un elemento al control chklPromovidos se escribe lo siguiente
chklPromovidos.Items.Add("María Fernanda")
Para agregar un arreglo a chklPromovidos se utiliza AddRange: (de manera similar en un ListBox y un ComboBox)
Dim aPromovidos(3) as String
aPromovidos(0) = "Fernando"
aPromovidos(1) = "Carolina"
aPromovidos(2) = "María Fernanda"
aPromovidos(3) = "Fernandito"chklPromovidos.Items.AddRange(aPromovidos)
Para eliminar una opción se utiliza Remove cuando se usa el texto de la opción y RemoveAt cuando usamos el índice que lo identifica. Para eliminar todos usamos Clear.
Para eliminar a Carlos: chklPromovidos.Items.Remove("Carlos")
Para eliminar al selecccionado: chklPromovidos.Items.Remove(chklPromovidos.SelectedItem)
Para eliminar al tercero: chklPromovidos.Items.RemoveAt(2)
Para eliminar a todos: chklPromovidos.Clear()
Algunas propiedades
CheckedListBox y ListBox
Propiedad Descripción CheckOnClick Indica si la casilla cambia de estado con un solo clic. Aconsejo establecerla a True. Solo la tiene el control CheckedListBox DataSource Indica el Origen de Datos DisplayMember Indica la columna del origen de datos que se mostrará ValueMember Indica el valor que se utilizará en caso la propiedad DislpayMember no sea el dato a utilizar. Items Colección de valores incluidos en el control El Control TabControl
Este control TabControl muestra una colección de fichas similares a las etiquetas de una ventana de opciones (Herramientas, Opciones ... aunque sea de Internet Explorer), cada ficha o Página puede contener otros controles y también imágenes.
Este control es similar al control SStab y el control TabStrip de Visual Basic 6.0, actúa como un contenedor.
Algunas propiedades
TabControl
Propiedad Descripción TabPages Contiene las fichas a mostrar en el control. HotTrack Las fichas cambian de apariencia cuando el cursor para sobre ellas ImagesList Relaciona el control con un control ImageList para mostrar el cada ficha una imagen Multiline Muestra las fichas en varias líneas cuando esta en True. ContextMenu Especifica el menú contextual del control Para mas información vease: Colección combinada de Visual Studio .Net
Ahora mis ejercicios
El Primero: PracOtros
El Primer Proyecto llamado PracOtros (ver empaquetado con el código) supone la creación de una Proforma, donde seleccionaremos primero una línea de Productos y se mostrarán sublíneas cada una definida en una array, después de seleccionar la sublínea se mostrarán los productos en un CheckedListBox, seleccionado el producto se lo puede incluir en la Proforma que se incluirá en una ListBox. Cada opción es utilizada en un Page de un control Tabcontrol.
Aquí parte del código:
'PROCEDIMIENTO PARA LLENAR LAS SUBLINEAS
Private Sub LlenarSublineas(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cbolinea.SelectedIndexChanged
lstSublineas.Items.Clear()
Select Case cbolinea.SelectedItem
Case "Lacteos" 'SUBLINEAS DE Lacteos
Dim SubLacteos() As String = _
{"Enlatados", "Instantáneos", "Derivados"}
Sublineas = SubLacteos.Clone
Case "Ferreteria" 'SUBLINEAS DE Ferreteria
Dim SubFerreteria() As String = _
{"Herramientas", "Agregados", "Pegamentos"}
Sublineas = SubFerreteria.Clone
Case "Perfumería" 'SUBLINEAS DE Perfumería
Dim SubPerfumes() As String = _
{"Nacionales", "Importados", "Alternativos"}
Sublineas = SubPerfumes.Clone
Case "Hogar" 'SUBLINEAS DE Hogar
Dim Subhogar() As String = _
{"Decoración", "Sanitarios", "Cerámicas"}
Sublineas = Subhogar.Clone
End Select
lstSublineas.Items.AddRange(Sublineas)
End Sub
El segundo: PracListas
Este ejercicio complementa el uso del control ListBox, supone que debe escribir un nombre, luego seleccionar un programa donde matricular al alumno, de acuerdo al programa seleccionado que son: Computación e Informática, Secretariado o Contabilidad se generan cursos que se insertan en una lista, estos cursos deben seleccionarse, activar el CheckBox para matricularlo y luego calcular el costo de la matrícula.
Aquí parte del código:
'PROCEDIMIENTO PARA LA SELECCION DE LOS CURSOS
Private Sub Seleccion(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdUnoSel.Click
If sender Is cmdUnoSel Then 'Seleccion de un Curso
If lstDispo.SelectedIndex = -1 Then
MessageBox.Show("No hay curso seleccionado...", "Error...")
Else
lstSelec.Items.Add(lstDispo.SelectedItem)
lstDispo.Items.Remove(lstDispo.SelectedItem)
End If
ElseIf sender Is cmdTodosSel Then 'Seleccion de todos los cursos
Dim x As Integer
For x = 0 To lstDispo.Items.Count - 1
lstSelec.Items.Add(lstDispo.Items.Item(x))
Next
lstDispo.Items.Clear()
ElseIf sender Is cmdUnoNoSel Then 'Eliminacion de un curso
If lstSelec.SelectedIndex = -1 Then
MessageBox.Show("Seleccione el curso a eliminar...", "Error...")
Else
lstDispo.Items.Add(lstSelec.SelectedItem)
lstSelec.Items.Remove(lstSelec.SelectedItem)
End If
ElseIf sender Is cmdTodosNoSel Then 'Eliminación de todos
Dim x As Integer
For x = 0 To lstSelec.Items.Count - 1
lstDispo.Items.Add(lstSelec.Items.Item(x))
Next
lstSelec.Items.Clear()
End If
End Sub
El Tercero: Practica02
Este ejercicio permite complementar el uso de los controles básicos de Windows Forms, asi como el uso del control PictureBox para agregar una imagen o una foto dentro del formulario.
Aquí parte del código:
Private Sub Procesar(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdAgregar.Click
'PROCEDIMIENTO PARA LOS BOTONES DE COMANDO
' LOS DELEGADOS SE HAN INSERTADO EN EL CONSTRUCTOR
'con las siguientes dos lineas
'AddHandler cmdNuevo.Click, AddressOf Procesar
'AddHandler cmdSalir.Click, AddressOf Procesar
Dim TEXTOMENSAJE As String
If sender Is cmdSalir Then
End
ElseIf sender Is cmdNuevo Then
txtnombre.Clear()
txtdire.Clear()
optsoltero.Checked = True
optcasado.Checked = False
optestable.Checked = False
optcontrato.Checked = True
optotro.Checked = False
dtpFechaReg.Value = Now
Dim x As Integer
For x = 0 To chklAficiones.Items.Count - 1
'COMPROBAR SI ESTA SELECCIONADO
If chklAficiones.GetItemCheckState(x) = CheckState.Checked Then
'QUITAR LA SELECCION
chklAficiones.SetItemChecked(x, False)
End If
Next
Me.chklAficiones.ClearSelected()
Me.PictureBox1.Image = Nothing
txtnombre.Focus()
ElseIf sender Is cmdAgregar Then
MessageBox.Show("Agregar el registro...", _
"Registro Nuevo...", MessageBoxButtons.OK)
'MOSTRAR EL MENSAJE UNICAMENTE...
TEXTOMENSAJE = "Nombre: " & txtnombre.Text & ControlChars.CrLf & _
"Dirección: " & txtdire.Text & ControlChars.CrLf & _
"Estado Civil: " & IIf(optsoltero.Checked, "Soltero", "Casado") & _
ControlChars.CrLf & _
"Condición: " & IIf(optestable.Checked, "Estable", _
IIf(optcontrato.Checked, "Contratado", "Otra")) & _
ControlChars.CrLf & _
"Fecha de Registro: " & Me.dtpFechaReg.Value & _
ControlChars.CrLf & ControlChars.CrLf & _
ControlChars.CrLf & _
"Aficiones : " & ControlChars.CrLf
Dim x As Integer 'Para explorar las opciones del CheckedListBox
For x = 0 To chklAficiones.Items.Count - 1
'COMPROBAR SI ESTA SELECCIONADO
If chklAficiones.GetItemCheckState(x) = CheckState.Checked Then
'Agregar la Afición al TextoMensaje
TEXTOMENSAJE = TEXTOMENSAJE & ControlChars.CrLf _
& chklAficiones.Items(x)
End If
Next
MessageBox.Show(TEXTOMENSAJE, "Datos del registro insertado", _
MessageBoxButtons.OK)
End If
End Sub
El Cuarto: PracVariosForms01
Este ejercicio es mas completo, incluye cajas de texto, CheckedListBox, ListBox y el uso de mas de un formulario, insertando también un módulo haciendo uso de variables publicas que se usarán en mas de un formulario.
Supone un sistema de Evaluacion de Personal, donde al seleccionar un departamento aparece el personal de este, deberán seleccionarse un mínimo de 6 personas para los exámenes, los cuales deben ser como mínimo 02 y como máximo 04. En el control DateTimePicker utilizado se especifica como fechas límites los días del mes en curso.
Aquí parte del código:
'PROCEDIMIENTO PARA LA SELECCION DEL PERSONAL
Private Sub Seleccion(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdUnoSel.Click
cmdMostrar.Enabled = False
If sender Is cmdUnoSel Then 'Seleccion de un empleado
If lstDispo.SelectedIndex <> -1 Then
lstSelec.Items.Add(lstDispo.SelectedItem)
lstDispo.Items.Remove(lstDispo.SelectedItem)
End If
ElseIf sender Is cmdTodosSel Then 'Seleccion de todos los empleados
Dim x As Integer
For x = 0 To lstDispo.Items.Count - 1
lstSelec.Items.Add(lstDispo.Items.Item(x))
Next
lstDispo.Items.Clear()
ElseIf sender Is cmdUnoNoSel Then 'Eliminacion de un empleado
If lstSelec.SelectedIndex <> -1 Then
lstDispo.Items.Add(lstSelec.SelectedItem)
lstSelec.Items.Remove(lstSelec.SelectedItem)
End If
ElseIf sender Is cmdTodosNoSel Then 'Eliminación de todos
Dim x As Integer
For x = 0 To lstSelec.Items.Count - 1
lstDispo.Items.Add(lstSelec.Items.Item(x))
Next
lstSelec.Items.Clear()
End If
End Sub
Notas:
- Bajar el empaquetado del ejercicio para ejecutarlo, fue hecho con Visual Studio 2002.
- Cambiar el Proyecto de Inicio y luego los formularios de Inicio para cada Proyecto para poder ejecutarlos.
Fichero con el código de ejemplo: FernandoLuque_Controles.zip - 47 KB