Personalizar Items ListBox (Base para Selector Cuentas) con VB .NET
Se trata de una pequeña aplicacion que utilizando como ejemplo una Base para un Selector de Cuentas, implementa una forma de Personalizar los Items de un ListBox.
Buenos dias, he visto tus tutoriales y la verdad son muy buenos. Estado buscando la manera de poder abrir cualquier archivo ya sea .doc, .docx, .xls, .xlsx dentro de un formulario, y que este archivo abierto se pueda manipular sin problema alguno... por el momento solo tengo un procesador de texto para abrir los archivos .rtf y .txt pero aun no logro encontrar la manera de poder abrir ese tipo de archivos... No se si sepas como realizar dicha operacion....
Hola: Esos archivos(.doc, .xls,etc. ) corresponden a Word y Excel que forman parte de Microsoft Office. Existen componentes COM en "Elegir elementos" que se pueden añadir a la Barra de Herramientas y por tanto al formulario. Para que funcionen es necesario disponer de Office en el ordenador. Sino dispones de Office no los podras usar. Yo no lo tengo y no puedo hacer pruebas ni videos demostrativos. Si dispones de Office hay algunos tutoriales en Youtube que explican como hacerlo. Busca por Excel y VB o Excel y C#. Es lo mas habitual. Saludos.
Hola amigo. Lo primero felicitarte por tu blog. Quería preguntarte si es posible ejecutar un programa a través de una ventana de la aplicacion que se hayas creado en visual studio. es decir, que se pueda ver y manejar el programa desde una ventanita de visual studio. Saludos
Hola: No se si has visto esto y si es lo que necesitas: http://visualbasictutoriales.blogspot.com.es/2014/10/keybdevent-control-de-otros-procesos.html Saludos.
Hola, buenas tardes. Tengo un problema al que no encuentro solución y me gustaría saber si hay algún modo de hacer posible su ejecución: Tengo archivos .exe en una ruta y sus subcarpetas y quiero listarlos en un ListView (hasta ahí todo correcto); lo que no consigo hacer es mostrar el icono de la aplicación en el ListView. He encontrado este enlace de Microsoft (https://msdn.microsoft.com/es-es/library/ms404308(v=vs.110).aspx) que muestra como listar los archivos con el icono en el ListView, pero yo sólo quiero que se listen los archivos .exe del directorio que indico mas los archivos .exe de las subcarpetas. Gracias de antemano por leer mi comentario. Espero respuesta.
Hola: Ante todo muchas gracias por mencionar ese link. No lo conocia y creo que lo voy a publicar porque creo que le puede interesar a mucha gente. En cuanto a lo que planteas: ¿Has probado esto adaptando el For Each de ese mismo codigo?:
For Each file In dir.GetFiles() If file.Extension = ".exe" Then ' Set a default icon for the file. Dim iconForFile As Icon = SystemIcons.WinLogo
item = New ListViewItem(file.Name, 1)
' Check to see if the image collection contains an image ' for this extension, using the extension as a key. If Not (imageList1.Images.ContainsKey(file.Extension)) Then
' If not, add the image to the image list. iconForFile = System.Drawing.Icon.ExtractAssociatedIcon(file.FullName) imageList1.Images.Add(file.Extension, iconForFile) End If item.ImageKey = file.Extension listView1.Items.Add(item) End If Next file
¿Cómo puedo poner mi propio puntero en una formulario? Tengo un cursor .cur que quiero usar pero al escribir el codgio "Me.Cursor = New Cursor ("ruta del .cur") me dice que es un formato invalido
Public Declare Unicode Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileW" (ByVal filename As String) As IntPtr
'Luego mandas a llamar los tipos de cursores que necesites:
Public CursorLoad As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\Cload.ani") Public CursorArrow As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\CArrow.cur") Public CursorArrowAnimado As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\CArrowAnimado.ani")
'En esta parte los mando a llamar de la siguiente manera para todos mis formularios: Friend Sub Cursores(ByVal fmr As Form) Call CursorParent(fmr) Call CursorChildren(fmr) Call CursorTabControl(fmr) Call CursorPanelChildren(fmr) End Sub
Friend Sub CursorTabControl(ByVal fmr As Form) 'DECLARAMOS LOS DIFERENTES TIPOS DE CURSOR QUE SE ENCUENTRAN DENTRO DE UN TABCONTROL. For Each Ctrl As Control In fmr.Controls If TypeOf (Ctrl) Is TabControl Then For Each CtrChildren As Control In Ctrl.Controls If TypeOf (CtrChildren) Is TabPage Then For Each SubCtrChildren As Control In CtrChildren.Controls
If TypeOf (SubCtrChildren) Is TextBox Then SubCtrChildren.Cursor = New Cursor(CursorIbeam) ElseIf TypeOf (SubCtrChildren) Is MaskedTextBox Then SubCtrChildren.Cursor = New Cursor(CursorIbeam) ElseIf TypeOf (SubCtrChildren) Is Label Then SubCtrChildren.Cursor = New Cursor(CursorNo) ElseIf TypeOf (SubCtrChildren) Is CheckBox Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is ComboBox Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is PictureBox Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is Telerik.WinControls.UI.RadGridView Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is ListBox Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is DataGridView Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is Button Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is LinkLabel Then SubCtrChildren.Cursor = New Cursor(CursorSelect) End If
Next End If Next End If Next End Sub
'Ya en el load del formulario que lo necesito lo hago de la siguiente manera: Private Sub FmrAltaPersonal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load On Error Resume Next Call Cursores(Me) End Sub
'Y si necesitas un CursorLoad y uno Default lo haces de la siguiente manera:
Me.Cursor = New Cursor(CursorLoad)
Me.Cursor = New Cursor(CursorArrowAnimado)
'Bueno eso es todo la verdad no creo que tengas algun inconveniente...
Public Declare Unicode Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileW" (ByVal filename As String) As IntPtr
'Luego mandas a llamar los tipos de cursores que necesites:
Public CursorLoad As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\Cload.ani") Public CursorArrow As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\CArrow.cur") Public CursorArrowAnimado As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\CArrowAnimado.ani")
'En esta parte los mando a llamar de la siguiente manera para todos mis formularios: Friend Sub Cursores(ByVal fmr As Form) Call CursorParent(fmr) Call CursorChildren(fmr) Call CursorTabControl(fmr) Call CursorPanelChildren(fmr) End Sub
Friend Sub CursorTabControl(ByVal fmr As Form) 'DECLARAMOS LOS DIFERENTES TIPOS DE CURSOR QUE SE ENCUENTRAN DENTRO DE UN TABCONTROL. For Each Ctrl As Control In fmr.Controls If TypeOf (Ctrl) Is TabControl Then For Each CtrChildren As Control In Ctrl.Controls If TypeOf (CtrChildren) Is TabPage Then For Each SubCtrChildren As Control In CtrChildren.Controls
If TypeOf (SubCtrChildren) Is TextBox Then SubCtrChildren.Cursor = New Cursor(CursorIbeam) ElseIf TypeOf (SubCtrChildren) Is MaskedTextBox Then SubCtrChildren.Cursor = New Cursor(CursorIbeam) ElseIf TypeOf (SubCtrChildren) Is Label Then SubCtrChildren.Cursor = New Cursor(CursorNo) ElseIf TypeOf (SubCtrChildren) Is CheckBox Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is ComboBox Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is PictureBox Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is Telerik.WinControls.UI.RadGridView Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is ListBox Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is DataGridView Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is Button Then SubCtrChildren.Cursor = New Cursor(CursorSelect) ElseIf TypeOf (SubCtrChildren) Is LinkLabel Then SubCtrChildren.Cursor = New Cursor(CursorSelect) End If
Next End If Next End If Next End Sub
'Ya en el load del formulario que lo necesito lo hago de la siguiente manera: Private Sub FmrAltaPersonal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load On Error Resume Next Call Cursores(Me) End Sub
'Bueno eso es todo la verdad no creo que tengas algun inconveniente...
Hola, hay alguna forma de que cuando uno de click sobre cualquier parte del ListBox este no afecte el texto (ya que se distorsiona una vez dado click sobre un Item). O una forma de hacer el ListBox de sólo lectura. Gracias de antemano
Buenos dias, he visto tus tutoriales y la verdad son muy buenos.
ResponderEliminarEstado buscando la manera de poder abrir cualquier archivo ya sea .doc, .docx, .xls, .xlsx dentro de un formulario, y que este archivo abierto se pueda manipular sin problema alguno... por el momento solo tengo un procesador de texto para abrir los archivos .rtf y .txt pero aun no logro encontrar la manera de poder abrir ese tipo de archivos...
No se si sepas como realizar dicha operacion....
Hola: Esos archivos(.doc, .xls,etc. ) corresponden a Word y Excel que forman parte de Microsoft Office. Existen componentes COM en "Elegir elementos" que se pueden añadir a la Barra de Herramientas y por tanto al formulario.
EliminarPara que funcionen es necesario disponer de Office en el ordenador. Sino dispones de Office no los podras usar. Yo no lo tengo y no puedo hacer pruebas ni videos demostrativos.
Si dispones de Office hay algunos tutoriales en Youtube que explican como hacerlo. Busca por Excel y VB o Excel y C#. Es lo mas habitual.
Saludos.
Este comentario ha sido eliminado por el autor.
ResponderEliminarHola amigo. Lo primero felicitarte por tu blog.
ResponderEliminarQuería preguntarte si es posible ejecutar un programa a través de una ventana de la aplicacion que se hayas creado en visual studio. es decir, que se pueda ver y manejar el programa desde una ventanita de visual studio. Saludos
Hola: No se si has visto esto y si es lo que necesitas:
Eliminarhttp://visualbasictutoriales.blogspot.com.es/2014/10/keybdevent-control-de-otros-procesos.html
Saludos.
Es lo mismo que quiero hacer pero con las herramientas de Office...
ResponderEliminarSaludos
Hola: Lo siento pero para hacer cosas con Office en Visual Basic es necesario disponer de Office en el ordenador y yo no lo tengo. Saludos.
EliminarHola, buenas tardes.
ResponderEliminarTengo un problema al que no encuentro solución y me gustaría saber si hay algún modo de hacer posible su ejecución:
Tengo archivos .exe en una ruta y sus subcarpetas y quiero listarlos en un ListView (hasta ahí todo correcto); lo que no consigo hacer es mostrar el icono de la aplicación en el ListView. He encontrado este enlace de Microsoft (https://msdn.microsoft.com/es-es/library/ms404308(v=vs.110).aspx) que muestra como listar los archivos con el icono en el ListView, pero yo sólo quiero que se listen los archivos .exe del directorio que indico mas los archivos .exe de las subcarpetas.
Gracias de antemano por leer mi comentario. Espero respuesta.
Hola:
EliminarAnte todo muchas gracias por mencionar ese link. No lo conocia y creo que lo voy a publicar porque creo que le puede interesar a mucha gente.
En cuanto a lo que planteas: ¿Has probado esto adaptando el For Each de ese mismo codigo?:
For Each file In dir.GetFiles()
If file.Extension = ".exe" Then
' Set a default icon for the file.
Dim iconForFile As Icon = SystemIcons.WinLogo
item = New ListViewItem(file.Name, 1)
' Check to see if the image collection contains an image
' for this extension, using the extension as a key.
If Not (imageList1.Images.ContainsKey(file.Extension)) Then
' If not, add the image to the image list.
iconForFile = System.Drawing.Icon.ExtractAssociatedIcon(file.FullName)
imageList1.Images.Add(file.Extension, iconForFile)
End If
item.ImageKey = file.Extension
listView1.Items.Add(item)
End If
Next file
Saludos.
¿Cómo puedo poner mi propio puntero en una formulario? Tengo un cursor .cur que quiero usar pero al escribir el codgio "Me.Cursor = New Cursor ("ruta del .cur") me dice que es un formato invalido
ResponderEliminarEso es demasiado facil,
Eliminar'En un modulo declara lo siguiente:
Public Declare Unicode Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileW" (ByVal filename As String) As IntPtr
'Luego mandas a llamar los tipos de cursores que necesites:
Public CursorLoad As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\Cload.ani")
Public CursorArrow As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\CArrow.cur")
Public CursorArrowAnimado As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\CArrowAnimado.ani")
'En esta parte los mando a llamar de la siguiente manera para todos mis formularios:
Friend Sub Cursores(ByVal fmr As Form)
Call CursorParent(fmr)
Call CursorChildren(fmr)
Call CursorTabControl(fmr)
Call CursorPanelChildren(fmr)
End Sub
Friend Sub CursorTabControl(ByVal fmr As Form)
'DECLARAMOS LOS DIFERENTES TIPOS DE CURSOR QUE SE ENCUENTRAN DENTRO DE UN TABCONTROL.
For Each Ctrl As Control In fmr.Controls
If TypeOf (Ctrl) Is TabControl Then
For Each CtrChildren As Control In Ctrl.Controls
If TypeOf (CtrChildren) Is TabPage Then
For Each SubCtrChildren As Control In CtrChildren.Controls
If TypeOf (SubCtrChildren) Is TextBox Then
SubCtrChildren.Cursor = New Cursor(CursorIbeam)
ElseIf TypeOf (SubCtrChildren) Is MaskedTextBox Then
SubCtrChildren.Cursor = New Cursor(CursorIbeam)
ElseIf TypeOf (SubCtrChildren) Is Label Then
SubCtrChildren.Cursor = New Cursor(CursorNo)
ElseIf TypeOf (SubCtrChildren) Is CheckBox Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is ComboBox Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is PictureBox Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is Telerik.WinControls.UI.RadGridView Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is ListBox Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is DataGridView Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is Button Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is LinkLabel Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
End If
Next
End If
Next
End If
Next
End Sub
'Ya en el load del formulario que lo necesito lo hago de la siguiente manera:
Private Sub FmrAltaPersonal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
On Error Resume Next
Call Cursores(Me)
End Sub
'Y si necesitas un CursorLoad y uno Default lo haces de la siguiente manera:
Me.Cursor = New Cursor(CursorLoad)
Me.Cursor = New Cursor(CursorArrowAnimado)
'Bueno eso es todo la verdad no creo que tengas algun inconveniente...
Saludos
Gracias!!, funciona a la perfección
Eliminarclaro para eso estamos...
EliminarSaludos
Eso es demasiado facil,
ResponderEliminar'En un modulo declara lo siguiente:
Public Declare Unicode Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileW" (ByVal filename As String) As IntPtr
'Luego mandas a llamar los tipos de cursores que necesites:
Public CursorLoad As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\Cload.ani")
Public CursorArrow As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\CArrow.cur")
Public CursorArrowAnimado As IntPtr = LoadCursorFromFile(Application.StartupPath & "\Cursor\CArrowAnimado.ani")
'En esta parte los mando a llamar de la siguiente manera para todos mis formularios:
Friend Sub Cursores(ByVal fmr As Form)
Call CursorParent(fmr)
Call CursorChildren(fmr)
Call CursorTabControl(fmr)
Call CursorPanelChildren(fmr)
End Sub
Friend Sub CursorTabControl(ByVal fmr As Form)
'DECLARAMOS LOS DIFERENTES TIPOS DE CURSOR QUE SE ENCUENTRAN DENTRO DE UN TABCONTROL.
For Each Ctrl As Control In fmr.Controls
If TypeOf (Ctrl) Is TabControl Then
For Each CtrChildren As Control In Ctrl.Controls
If TypeOf (CtrChildren) Is TabPage Then
For Each SubCtrChildren As Control In CtrChildren.Controls
If TypeOf (SubCtrChildren) Is TextBox Then
SubCtrChildren.Cursor = New Cursor(CursorIbeam)
ElseIf TypeOf (SubCtrChildren) Is MaskedTextBox Then
SubCtrChildren.Cursor = New Cursor(CursorIbeam)
ElseIf TypeOf (SubCtrChildren) Is Label Then
SubCtrChildren.Cursor = New Cursor(CursorNo)
ElseIf TypeOf (SubCtrChildren) Is CheckBox Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is ComboBox Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is PictureBox Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is Telerik.WinControls.UI.RadGridView Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is ListBox Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is DataGridView Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is Button Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
ElseIf TypeOf (SubCtrChildren) Is LinkLabel Then
SubCtrChildren.Cursor = New Cursor(CursorSelect)
End If
Next
End If
Next
End If
Next
End Sub
'Ya en el load del formulario que lo necesito lo hago de la siguiente manera:
Private Sub FmrAltaPersonal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
On Error Resume Next
Call Cursores(Me)
End Sub
'Bueno eso es todo la verdad no creo que tengas algun inconveniente...
Saludos
Hola, hay alguna forma de que cuando uno de click sobre cualquier parte del ListBox este no afecte el texto (ya que se distorsiona una vez dado click sobre un Item). O una forma de hacer el ListBox de sólo lectura. Gracias de antemano
ResponderEliminar