> Vengo de VB6 y estoy portando un control de usuario a vb.net. Lo que
> estoy necesitando es saber como obtengo el nombre del control (tipo
> MiControl1, MiControl2, etc) para que el mismo por defecto lo exiba
> cuando es colocado en un contenedor.
Hola:
La verdad es que no entiendo muy bien para qué quieres obtener el nombre del
control que el usuario ha colocado sobre un formulario. Si es para lo que no
estás comentando, pienso que no se necesario.
Si tienes desarrollado un control de usuario que hereda de la clase
«System.Windows.Forms.UserControl», cuando el usuario lo coloque dentro de
un contenedor, como bien pudiera ser un formulario cualquiera,
automáticamente se le asignará un nombre por defecto, que será el nombre del
control terminado en un número.
Por ejemplo, si tu control de usuario se llama «MiControl», el primer
control que el usuario añada al formulario se llamará «MiControl1», el
segundo «MiControl2», y así sucesivamente, tal y como
ocurre con cualquier otro control que se añade a un formulario.
Un saludo y ¡Feliz Año Nuevo!
--
Enrique Martínez
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
> Busco que un control exiba por defecto su nombre, pero el nombre que
> le asigna el contenedor que como tu bien dices Enrique, es el nombre
> del control seguido de un número. En VB6 lo hacía mediante 'Extender'
> que me posibilitaba recuperar el nombre que el contenedor le asigna al
> control. No es un asunto demasiado importante, sino que simplemente
> ayuda al programador que inserta varios controles en un contenedor,
> saber el nombre del mismo sin tener que marcarlo y verlo en la ventana
> propiedades.
Bueno, no sé yo que decirte, si ayuda mucho o poco al programador que
aparezca el nombre del control en su propiedad Text, de hecho, en las
últimas versiones de Visual Basic, ya no aparece el nombre del control en la
propiedad Text, al menos de los controles TextBox, cuestión ésta que
personalmente agradezco que así suceda.
No obstante, si tú deseas que aparezca el nombre por defecto del control de
usuario, en la propiedad Text de algún control TextBox de los existentes en
el control de usuario llamado «MiControl», simplemente tienes que efectuar
una llamada a la propiedad «Site» del control.
Por ejemplo, si solamente deseas que aparezca el nombre por defecto en la
propiedad Text de algún control TextBox, sin entrar en más detalles, en el
evento «Load» del control de usuario ejecutarías lo siguiente:
Private Sub MiControl_Load( ... )
' Sólo si estamos en modo de diseño
'
If Me.DesignMode Then
TextBox1.Text = Site.Name
End If
End Sub
Pero si también deseas que se modifique la propiedad Text del control
TextBox cuando el usuario modifique el nombre del control de usuario desde
la ventana Propiedades, entonces deberás ejecutar el siguiente código en el
componente «MiControl», código fuente que hay que agradecérselo a Eduardo A.
Morcillo:
Imports System.ComponentModel.Design
Public Class MiControl
Private Sub MiControl_Load( _
ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load
If Me.DesignMode Then
Dim ccs As IComponentChangeService = _
CType(Me.GetService( _
GetType(IComponentChangeService)), IComponentChangeService)
If Not ccs Is Nothing Then
AddHandler ccs.ComponentRename, AddressOf OnRename
End If
TextBox1.Text = Site.Name
End If
End Sub
Protected Sub OnRename( _
ByVal sender As Object, _
ByVal e As ComponentRenameEventArgs)
If e.Component Is Me Then
TextBox1.Text = e.NewName
End If
End Sub
End Class