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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Matriz de controles MenuStrip partiendo modo diseño (VBasic 2013) (Solucionado)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Matriz de controles MenuStrip partiendo modo diseño (VBasic 2013) (Solucionado)  (Leído 5,250 veces)
Tazmania40

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Matriz de controles MenuStrip partiendo modo diseño (VBasic 2013) (Solucionado)
« en: 6 Octubre 2015, 09:09 am »

Buenos días, veo que en VB6 teníamos la propiedad Index y cuando creabamos una matriz de controles te preguntaba si ponías el mismo nombre VB "Desea crear una matriz de controles...?", asi cuando empleabas el mismo evento Click solo hacía referencia al pulsado por la propiedad Index.

Eso es lo que preciso en mi programa, tengo un menú bastante extenso y ya cambiado muchas cosas y solo tengo 2 submenus que hacen referencia según lo que pulsas a un mismo código, repito por tanto un total de 20, este código.

Código
  1. Private Sub MnuRepasoSuma1_Click(sender As Object, e As EventArgs) Handles MnuRepasoSuma1.Click
  2.        Form2.Close()
  3.        TAB = "SUMAR" : RE = 1
  4.        Form2.Show()
  5. End Sub
  6.  
  7. Private Sub MnuRepasoSuma2_Click(sender As Object, e As EventArgs) Handles MnuRepasoSuma2.Click
  8.        Form2.Close()
  9.        TAB = "SUMAR" : RE = 2
  10.        Form2.Show()
  11. End Sub
  12.  
  13. Private Sub MnuRepasoSuma3_Click(sender As Object, e As EventArgs) Handles MnuRepasoSuma3.Click
  14.        Form2.Close()
  15.        TAB = "SUMAR" : RE = 3
  16.        Form2.Show()
  17. End Sub
  18. ...
  19. ...
  20.  

Y así 20 veces, requiero por tanto algo parecido a la matriz, pero claro no voy a crear todo el MenuStrip por código porque es muy extenso, con muchas propiedades, colores, checked, font... y tardo mucho más y quería saber si se puede agrupar un mismo evento de pulsaciones de Click, como antes se hacía con Index para aprovechar un mismo codigo y que sólo cambio una variable que es RE que según lo pulsado antes se podía jugar con esa variable Index en VB6.

Requiero hacer lo mismo pero en VB2013, haber si hay alguna forma sin la de crear todo el menú con los submenus porque sino lo dejo asi (copiar y pegar) aunque no lo veo bien. Por eso me imagino que debe existir alguna forma de agrupar eventos y que se sepa cuando pulsas el 1, el 2, el 3 y que todo vaya a un mismo evento Click.

Muchas gracias y como siempre seguiré mirando a ver si veo alguna solución.



« Última modificación: 14 Octubre 2015, 11:56 am por Tazmania40 » En línea

Lekim

Desconectado Desconectado

Mensajes: 268



Ver Perfil
Re: Crear matriz de controles MenuStrip partiendo en modo diseño (Visual Basic 2013)
« Respuesta #1 en: 6 Octubre 2015, 22:39 pm »

Hola
Básicamente una manera es esta y lo puedes poner en un evento o función:

Código
  1. Public Class Form1
  2. Dim LabelArray(6) As Label
  3.  
  4. Private sub Evento()
  5.        For Index As Integer = 0 To LabelArray.Length - 1
  6.            LabelArray(Index) = New Label
  7.            Me.Controls.Add(LabelArray(Index))
  8.        Next
  9.  
  10. End Sub
  11. End Class
  12.  




Ahora querrás que estén en un lugar u otro. Entonces debes modificar las propiedades. Además seguramente necesites usar eventos como Click o MouseEnter.

Aquí te dejo un ejemplo:
Código
  1. Option Explicit On
  2. Option Strict On
  3. Public Class Form1
  4.    Dim LabelArray(6) As Label
  5.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.        Dim StartLabel As Point = New Point(10, 10)
  7.  
  8.  
  9.          For Index As Integer = 0 To LabelArray.Length - 1
  10.            LabelArray(Index) = New Label()
  11.            With LabelArray(Index)
  12.                .Text = "Label" & Index
  13.                .ForeColor = Color.Red
  14.                .Font = New Font("Arial", 10)
  15.                .BackColor = Color.Blue
  16.                .TextAlign = ContentAlignment.MiddleCenter
  17.                .Location = New Point(StartLabel.X, StartLabel.Y)
  18.            End With
  19.            Me.Controls.Add(LabelArray(Index)) 'Añade el control al Form
  20.            StartLabel.Y += 30 'Incrementa la posición Y, para que los labels queden uno debajo del otro
  21.        Next
  22.  
  23.         'Vincula   LabelArray_Click con el evento Click del control LabelArray
  24.        For I As Integer = 0 To LabelArray.Length - 1
  25.            AddHandler LabelArray(I).Click, AddressOf LabelArray_Click
  26.        Next
  27.    End Sub
  28.  
  29.    Private Sub LabelArray_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  30.        'Obtiene el índice del control seleccionado
  31.        Dim Index As Integer = Array.IndexOf(LabelArray, sender)
  32.  
  33.        If Index.Equals(0) Then LabelArray(0).Text = "HOLA"
  34.    End Sub
  35. End Class


Añado que esto es en WindowsForms, en WPF, es algo diferente. Ahora, lo paso a  WPF




Aquí está lo mismo pero para WPF.

Código
  1. Option Explicit On
  2. Option Strict On
  3. Class MainWindow
  4.    Dim LabelArray(6) As Label
  5.    Private Sub MainWindow_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
  6.        Dim StartLabel As New Point(X:=50, Y:=50)
  7.        For Index As Integer = 0 To LabelArray.Length - 1
  8.            LabelArray(Index) = New Label()
  9.            With LabelArray(Index)
  10.                .Content = "Label" & Index  'Texto que muestra el Label
  11.                .Width = 100
  12.                .Height = 20
  13.                .Foreground = Brushes.Red 'Color del texto
  14.                .Background = Brushes.Blue 'Color del fondo
  15.                .FontFamily = New FontFamily("Arial")
  16.                .FontSize = 15
  17.                .Padding = New Thickness(25, 1, 0, 0) 'Colocación del texto dentro del label
  18.                .VerticalAlignment = Windows.VerticalAlignment.Top 'Colocación del label
  19.                .HorizontalAlignment = Windows.HorizontalAlignment.Left  'Colocación del label
  20.                .Margin = New Thickness(StartLabel.X, StartLabel.Y, 0, 0) 'Margen Izquierda, Arriba,  Derecha, Abajo
  21.            End With
  22.            Grid1.Children.Add(LabelArray(Index)) 'Añade el control a Grid1 (NOTA: El Grid debe ser nombrado para poder establecer esta propiedad)
  23.            StartLabel.Y += 30
  24.        Next
  25.  
  26.        For I As Integer = 0 To LabelArray.Length - 1
  27.            AddHandler LabelArray(I).MouseLeftButtonDown, AddressOf LabelArray_MouseLeftButtonDown  'Vincula LabelArray con el evento LabelArray_Click y evento Click
  28.        Next
  29.    End Sub
  30.  
  31.    Private Sub LabelArray_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
  32.        Dim Index As Integer = Array.IndexOf(LabelArray, sender)
  33.        If Index.Equals(0) Then LabelArray(0).Content = CStr("Hola")
  34.    End Sub
  35. End Class

Por cierto, por si no lo sabes hay un foro para VB.NET, como supongo que sabrás esto es para Visual Basic X

http://foro.elhacker.net/net-b62.0/


« Última modificación: 6 Octubre 2015, 23:55 pm por Lekim » En línea

Lekim

Desconectado Desconectado

Mensajes: 268



Ver Perfil
Re: Crear matriz de controles MenuStrip partiendo en modo diseño (Visual Basic 2013)
« Respuesta #2 en: 7 Octubre 2015, 01:56 am »

Mis disculpas porque realmente no leí detenidamente tu pregunta  :-\

Vale, te refieres al MenuStrip. Y mira que está bien claro.

Bueno, parece ser que no se puede hacer tal y como se hace  por ejemplo con un Label, como he mostrado en el ejemplo.

Puedes hacer esto:
 

Código
  1. Public Class Form1
  2.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  3.  
  4.        Dim idMenu = "1001"
  5.        Dim Menu1 As New ToolStripMenuItem("Menu Item")
  6.  
  7.        Menu1.DropDownItems.Add("Item_1")
  8.        Menu1.DropDownItems.Add("Item_2")
  9.  
  10.        MenuStrip1.Items.Add(Menu1) 'Agrega el menú
  11.  
  12.        'crea eventos para Menu1
  13.        AddHandler Menu1.DropDownItemClicked, AddressOf Menu1_click
  14.  
  15.    End Sub
  16.  
  17.  
  18.    Private Sub Menu1_click(ByVal sender As Object, ByVal e As ToolStripItemClickedEventArgs)
  19.  
  20.        If e.ClickedItem.Text = "Item_1" Then Me.Text = "Item_1"
  21.        If e.ClickedItem.Text = "Item_2" Then Me.Text = "Item_2"
  22.  
  23.    End Sub
  24. End Class


Si prefieres trabajar con índices, se me ocurre hacer lo siguiente para el evento Click:

Código
  1.    Private Sub Menu1_click(ByVal sender As Object, ByVal e As ToolStripItemClickedEventArgs)
  2.        Dim IndexItem As Integer
  3.        Select Case e.ClickedItem.Text
  4.            Case "Item_1" : IndexItem = 0
  5.            Case "Item_2" : IndexItem = 1
  6.        End Select
  7.  
  8.  
  9.        If IndexItem = 0 Then Me.Text = "Item1"
  10.        If IndexItem = 1 Then Me.Text = "Item2"
  11.    End Sub
« Última modificación: 7 Octubre 2015, 13:59 pm por Lekim » En línea

Tazmania40

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Re: Crear matriz de controles MenuStrip partiendo en modo diseño (Visual Basic 2013)
« Respuesta #3 en: 7 Octubre 2015, 12:48 pm »

Gracias Lekim, lo primero desconocía que hubiera un subforo para .net en Programación general, a partir de ahora expongo mis preguntas ahí.

De momento solo programo con Windows Form, lo adapté todo para trabajar con Windows Form, incluso la apariencia porque ya de por sí es difícil pasar de VB6 a Visual Basic 2013, como para ponerse a programar con WPF, más bonito con web, gráficos... pero prefiero lo que ya sabía y adaptarlo, además en los programas utilizo la versión .Net Framework 3.5 para que tenga compatibilidad con XP porque tengo compañeros que utilizan todavía ese SO.

Estoy probando tu código del Label, cambiándolo por un botón y desconocía como agregar eventos a una matriz de controles.

Código
  1. AddHandler LabelArray(I).Click, AddressOf LabelArray_Click

y el cómo llamar a ese evento Click o naturalmente el que pongas añadiendo  a AddHandler y comparándolo con una variable como antes se hacía con Index.

Código
  1. Private Sub LabelArray_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  2.   'Obtiene el índice del control seleccionado
  3.   Dim Index As Integer = Array.IndexOf(LabelArray, sender)
  4.    If Index.Equals(0) Then LabelArray(0).Text = "HOLA"
  5. End Sub
  6.  

A todo esto se me ocurre añadir una clase o módulo, de forma que las matrices de controles no tengan definido el número de array "Dim LabelArray() As Label" y luego dimensionarlas desde el programa principal "LabelArray = New Label (NumTotal  - 1) {}" donde pongamos en la variable "NumTotal" el número de elementos que vayamos a utilizar. Veo que hay que ir haciendo procedimientos para ahorrarnos código que antes con dos pulsaciones podíamos hacer.

Voy a probar para mi programa añadiendo los elementos ToolStripMenuItem por código, seguramente genere un procedimento dentro del Formulario principal y más adelante ya crearé un módulo para ir acoplando distintos Controles de arrays y así intentar en mis programas que la utilización sea parecida como antes con VB6 e index.

MUCHAS GRACIAS, si me surge algún problema contestaré por aqui; pero lo dicho las nuevas preguntas lo haré por el foro NET.
En línea

Tazmania40

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Re: Crear matriz de controles MenuStrip partiendo en modo diseño (Visual Basic 2013)
« Respuesta #4 en: 7 Octubre 2015, 15:30 pm »

Pongo el código que ya he probado y funciona el evento Click, he cambiado algunas cosas puesto que primero el control MenuStrip lo creo en tiempo de diseño, tengo muchos menús ya creados y submenús y ponerlo todo en código es más lioso.

Solo pongo en código los 3 submenus que tienen varias opciones y que desembocan todos en un mismo click donde solo cambio una variable RE.

Código
  1. Private Prueba(2) As ToolStripMenuItem             'Declaro Array de elementos
  2.  
  3. 'Pongo los elementos en el submenú correspondiente y los agrego, además del evento Click
  4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  5.     Prueba(0) = New ToolStripMenuItem("Numero1")
  6.     Prueba(1) = New ToolStripMenuItem("Numero2")
  7.     Prueba(2) = New ToolStripMenuItem("Numero3")
  8.     For I = 0 To 2
  9.          MnuRepasoSuma.DropDownItems.Add(Prueba(I))
  10.          AddHandler Prueba(I).Click, AddressOf EventoMenu
  11.     Next I
  12. End Sub
  13.  
  14. Private Sub EventoMenu(ByVal sender As System.Object, ByVal e As System.EventArgs)
  15.     Dim Index As Integer = Array.IndexOf(Prueba, sender) 'Obtiene índice control seleccionado
  16.     Form2.Close()
  17.     TAB = "SUMAR" : RE = Index + 1
  18.     Form2.Show()
  19. End Sub
  20.  

Naturalmente tendre que utilizar for..next para añadir propiedades restantes, como dije seguramente genere una Clase con el procedimiento de declarar array y añadir propiedades y controles.

Una última pregunta, aunque funciona bien hay que utilizar el método Dispose, he leido algo que es como el Unload Me, pero no se muy bien como codificarlo y si al emplear algún Procedimiento hay que liberar objeto y en el código que tengo donde habría que colocarlo o bien al ser un código simple no hace falta y ya se libera todo cuando se cierra el programa?

Gracias y salu2
En línea

Lekim

Desconectado Desconectado

Mensajes: 268



Ver Perfil
Re: Crear matriz de controles MenuStrip partiendo en modo diseño (Visual Basic 2013)
« Respuesta #5 en: 11 Octubre 2015, 23:38 pm »

Hola Tazmania40

Está genial tu código. Muy buen aporte. Había visto ejemplos por ahí que usaban DropDownItems para crear los items con índices, pero los códigos estaba incompletos y no me funcionaban.

Igualmente en tu código  no has puesto la variable  MnuRepasoSuma de clase ToolStripMenuItem al que hace referencia aquí:

Código
  1. MnuRepasoSuma.DropDownItems.Add(Prueba(I))
  2.  


Además, ¿Qué ocurre si quiero añadir un separador. Esas líneas que hay en los menús para separar conceptos. ¿Cómo hago para crear submenus en los Items? También he despejado esa duda.


Experimentando un poco he conseguido hacerlo. He hecho este código a partir del que has facilitado para despejar esas dudas y que cualquiera puede hacer un copia y pega y probarlo, usarlo o mejorarlo.

Código
  1. Option Strict On
  2. Option Explicit On
  3. Public Class Form1
  4.  
  5.    Private mnuStrip1 As New MenuStrip()
  6.    Private mainToolStripMenuItem As New ToolStripMenuItem()
  7.    Private Item(3) As ToolStripMenuItem
  8.    Private SubItem1(3) As ToolStripMenuItem
  9.    Private Separator(0) As ToolStripSeparator
  10.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  11.  
  12.        '*****Crea la cabezera del menú  mnuStrip1 ********
  13.        Me.mainToolStripMenuItem.Text = "Archivo"
  14.        mnuStrip1.Items.AddRange(New ToolStripItem() {mainToolStripMenuItem}) 'Añade un submenú para añadir Items
  15.        Me.Controls.Add(mnuStrip1)
  16.        '**************************************************
  17.        '
  18.        For numItms As Integer = 0 To Item.Count - 1
  19.            Dim name As String = Nothing
  20.            Select Case numItms
  21.                Case 0 : name = "Abrir"
  22.                Case 1 : name = "Guardar"
  23.                Case 2 : name = "Recientes"
  24.                Case 3 : name = "Cerrar"
  25.                    'Crea un Separador encima del Item3
  26.                    Separator(0) = New ToolStripSeparator
  27.                    mainToolStripMenuItem.DropDownItems.Add(Separator(0)) 'Separador
  28.            End Select
  29.            Item(numItms) = New ToolStripMenuItem(name)
  30.            mainToolStripMenuItem.DropDownItems.Add(Item(numItms))
  31.  
  32.            'Añade subItems al Item 2
  33.            If numItms = 2 Then 'Añade subItems al Item 2 (Recientes)
  34.                For numSubItm As Integer = 0 To SubItem1.Count - 1
  35.                    Select Case numSubItm
  36.                        Case 0 : name = "File1"
  37.                        Case 1 : name = "File2"
  38.                        Case 2 : name = "File3"
  39.                        Case 3 : name = "File4"
  40.                    End Select
  41.                    SubItem1(numSubItm) = New ToolStripMenuItem(name) 'Crea SubItem1 para Item2
  42.                    Item(2).DropDownItems.Add(SubItem1(numSubItm)) 'Añade 'SubItem1
  43.                Next
  44.            End If
  45.        Next
  46.  
  47.        'Crea evento click para los Items
  48.        For I As Integer = 0 To Item.Count - 1
  49.            AddHandler Item(I).Click, AddressOf Item_Click
  50.        Next I
  51.        'Crea evento click para los Subitems
  52.        For I As Integer = 0 To SubItem1.Count - 1
  53.            AddHandler SubItem1(I).Click, AddressOf SubItem1_Click
  54.        Next I
  55.    End Sub
  56.    Private Sub Item_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  57.        'Obtiene el índice del Item seleccionado
  58.        Dim Index As Integer = Array.IndexOf(Item, sender)
  59.  
  60.        'Muestra un mensaje con el texto del Item
  61.        MessageBox.Show(Item(Index).Text)
  62.  
  63.        'Cierra la apliación si se hace click en el Item 3 de la colección
  64.        If Index = 3 Then End
  65.    End Sub
  66.    Private Sub SubItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  67.        'Obtiene el índice del Item seleccionado
  68.        Dim Index As Integer = Array.IndexOf(SubItem1, sender)
  69.  
  70.        'Muestra un mensaje con el texto del SubItem
  71.        MessageBox.Show(SubItem1(Index).Text)
  72.    End Sub
  73. End Class
  74.  

Como ves el menú 'Archivo' se crea en tiempo de ejecución. No hace falta añadir controles al formulario.

Mediante  "mnuStrip1.Items.AddRange(New ToolStripItem() {mainToolStripMenuItem})" se crea el menú para los Items y finalmente creamos el menú completo  (sin subitems) mediante  "Controls.Add(mnuStrip1)".

Depués hago lo que has hecho tú y añado el "submenu" con sus Items y su índice correspondiente, pero esta vez añadiendo un separador. La posición de cada menú dependerá del lugar que ocupe la línea de código en que se crea, como muetra el ejemplo.


Hoy mismo he conseguido hacer lo propio con un menú emergente. Supón que quieres hacer un menú emergente (contextMenu o PopupMenu en VB6) dentro de un control y quieres crear items con sus índices y crear además separadores y subítems para los items. Aquí dejo el código de ejemplo:



CREAR UN MENÚ EMERGENTE (contextmenu) DENTRO DE UN CONTROL


-Inserta un ListBox en el form. Este ejemplo usa  el evento ListBox1_MouseDown para mostrar el menú cuando se pulsa el botón derecho del ratón

Código
  1. Option Explicit On
  2. Option Strict On
  3. Public Class Form1
  4.    Dim Contextmenu1 As New ContextMenu()
  5.    Dim ContextItems1(3) As MenuItem
  6.    Dim SubItems1(3) As MenuItem
  7.  
  8.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  9.  
  10.        For numCItm As Integer = 0 To ContextItems1.Count - 1
  11.            Dim name As String = Nothing
  12.            Select Case numCItm
  13.                Case 0 : name = "Item0"
  14.                Case 1 : name = "-"
  15.                Case 2 : name = "Item2"
  16.                Case 3 : name = "Item3"
  17.            End Select
  18.            ContextItems1(numCItm) = New MenuItem(name)
  19.            If numCItm = 2 Then
  20.                For numCSubItm As Integer = 0 To SubItems1.Count - 1
  21.                    Select Case numCSubItm
  22.                        Case 0 : name = "SubItem0"
  23.                        Case 1 : name = "SubItem1"
  24.                        Case 2 : name = "SubItem2"
  25.                        Case 3 : name = "SubItem3"
  26.                    End Select
  27.  
  28.                    'Añade SubItems al Item 2
  29.                    SubItems1(numCSubItm) = New MenuItem(name) 'Crea SubItemX del Item2
  30.                    ContextItems1(numCItm).MenuItems.Add(SubItems1(numCSubItm)) 'Añade el subItemX
  31.                    'Evento para los SubItems
  32.                    AddHandler ContextItems1(numCItm).MenuItems(numCSubItm).Click, AddressOf SubItems1_Click
  33.                Next
  34.            End If
  35.            'Añade los Items
  36.            Contextmenu1.MenuItems.Add(ContextItems1(numCItm))
  37.            'Evento de los Items
  38.            AddHandler ContextItems1(numCItm).Click, AddressOf ContextItems1_Click
  39.        Next
  40.    End Sub
  41.  
  42.    Private Sub ContextItems1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  43.        'Obtiene índice control seleccionado
  44.        Dim Index As Integer = Array.IndexOf(ContextItems1, sender)
  45.  
  46.        'Muestra el texto del Item en la barra de título
  47.        MessageBox.Show(ContextItems1(Index).Text)
  48.    End Sub
  49.    Private Sub SubItems1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
  50.        'Obtiene índice control seleccionado
  51.        Dim Index As Integer = Array.IndexOf(SubItems1, sender)
  52.  
  53.        'Muestra el texto del SubItems en la barra de título
  54.        MessageBox.Show(SubItems1(Index).Text)
  55.    End Sub
  56.  
  57.    Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
  58.        If e.Button = MouseButtons.Right Then
  59.            Contextmenu1.Show(ListBox1, New System.Drawing.Point(e.Location.X, e.Location.Y))
  60.        End If
  61.    End Sub
  62. End Class
  63.  

  


« Última modificación: 11 Octubre 2015, 23:53 pm por Lekim » En línea

Tazmania40

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Re: Crear matriz de controles MenuStrip partiendo en modo diseño (Visual Basic 2013)
« Respuesta #6 en: 14 Octubre 2015, 11:55 am »

Muy bueno tu código Lekin, he probado lo del separador, no se me había ocurrido puesto que como te comente el control MenuStrip lo cree en modo diseño y sólo la parte que me hacía falta por código, por eso "MnuRepasoSuma" procede de un nombre del MenuStrip (diseño). Si tuviera que programarlo por código todo sería muy extenso porque cambio propiedades de name, font, checked, pongo imágenes de iconos... y creo que eso sería mejor hacerlo en una clase o un módulo que no se muy bien para hacer una array de controles que se utilice para cuando necesitemos llamarlo como antes se hacía con VB6.

Como mencioné solo faltaría aplicar el método Dispose, he leido algo pero veo que no me hace falta aplicarlo porque los objetos los empleo en el Formulario principal y estos se liberan en el archivo "Form1.Designer.vb" al finalizar el Form. Aunque no se si al salir debería llamar al Objeto.Dispose() para liberar por si acaso el GC (Garbage Collector) no los libera bien los recursos.

Si empleara alguna clase o módulo donde genere los objetos veo que si hay que implementar el método Dispose, que la verdad sería otro tema a tratar y extenso, donde las explicaciones de Microsoft las veo muy complicadas de entender y tendría que ponerme a ello, cosa que de momento para mi programa no necsito.

Excelente tus aportaciones y con el menú contextual. Este Visual Basic se parece cada vez más a Visual C, no tengo nada en contra pero para mi pienso que todo lo que se pueda realizar por diseño te ahorras trabajo y si hay que emplear mucho código es mejor crearte tus clases o módulos para no ser repetitivo por tanto no debería haber desaparecido la forma antigua de llamar a los array de controles y eso debería haberse implementado en Visual Basic 2013.

Muchas gracias por todo y mis nuevas preguntas iran al foro net
« Última modificación: 14 Octubre 2015, 11:59 am por Tazmania40 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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