Foros del Web » Programación para mayores de 30 ;) » .NET »

Obtener ancho de botón con AutoSize

Estas en el tema de Obtener ancho de botón con AutoSize en el foro de .NET en Foros del Web. Hola, El problema es el siguiente, estoy con un botón dinámico que le podrás cambiar el texto y para que aparesca el texto completo le ...
  #1 (permalink)  
Antiguo 14/05/2012, 21:38
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 2 meses
Puntos: 10
Obtener ancho de botón con AutoSize

Hola,

El problema es el siguiente, estoy con un botón dinámico que le podrás cambiar el texto y para que aparesca el texto completo le pongo “AutoSize = True”, ahora el problema es que cuando pido el ancho del botón me sale que es “100” que importa si es mayor o menor que 100.

¿Cómo puedo obtener su ancho original?

Gracias.
  #2 (permalink)  
Antiguo 15/05/2012, 22:18
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 2 meses
Puntos: 10
Respuesta: Obtener ancho de botón con AutoSize

UP!

Cita:
Iniciado por Motivo:
Revivo ya que necesito esto urgente, estoy trabajando en un proyecto DLL y esto me resulta imposible sin ese dato /:
Gracias!
  #3 (permalink)  
Antiguo 16/05/2012, 15:36
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: Obtener ancho de botón con AutoSize

Hola doword, a qué te refieres con que es "dinámico"?? si te refieres a cambiarle de texto segun veo tu caso sería obtener el width cuando se le hace el cambio de texto. Ahora si tu creas el boton por código durante la ejecución del programa y deseas hallar el width de este cuando se le cambia el texto, tedrías que hacer lo siguiente, te dejo este ejemplo haber si te es de ayuda :

Agregas 1 Textbox, 1 label y 1 boton al Winform
Código C:
Ver original
  1. public partial class Form1 : Form
  2.     {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.         }
  7.  
  8.         private void Form1_Load(object sender, EventArgs e)
  9.         {
  10.             Button miBoton = new Button();
  11.             miBoton.Name = "btnBoton";
  12.             miBoton.Text = "Soy un Boton Dinamico";
  13.             miBoton.AutoSize = true;
  14.             miBoton.Location = new Point(200, 200);
  15.             this.Controls.Add(miBoton);
  16.         }
  17.  
  18.         private void button1_Click(object sender, EventArgs e)
  19.         {
  20.             this.Controls["btnBoton"].Text = textBox1.Text;
  21.             //despues de cambiarle el texto hallamos el ancho actual
  22.             label1.Text = this.Controls["btnBoton"].Width.ToString();
  23.         }
  24.     }

PDT: Te lo mostré en C# ya que no especificas el tipo de lenguaje con el cual trabajas. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 16/05/2012, 19:50
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 2 meses
Puntos: 10
Respuesta: Obtener ancho de botón con AutoSize

Gracias Aquaventus!

La verdad me siento un poco tonto, hehe…

Comparando códigos (trabajaba en VB, pero el C se parece) me di cuenta que lo que pasa es lo siguiente…

Si tu pides el ancho del botón antes de “invocarlo” te dará 100 o 75, pero si lo pides una vez ya invocado te da el ancho verdadero…

Ejemplo:

Código vb:
Ver original
  1. Dim texto As New Label
  2.         Dim boton As New Button
  3.  
  4.         boton.AutoSize = True
  5.         boton.Location = New Point(30, 30)
  6.         boton.Text = "reu9tfdu34sfd 384fs 38940fsy 32984e 23849fsd jhd289 fdh2s39"
  7.  
  8.  
  9.         texto.Text = boton.Width
  10.         texto.Location = New Point(70, 70)
  11.  
  12.         Me.Controls.Add(boton)
  13.         Me.Controls.Add(texto)

El texto te sale "75"

Pero si lo invoco antes de "texto.Text = boton.Width"

Código vb:
Ver original
  1. Dim texto As New Label
  2.         Dim boton As New Button
  3.  
  4.         boton.AutoSize = True
  5.         boton.Location = New Point(30, 30)
  6.         boton.Text = "reu9tfdu34sfd 384fs 38940fsy 32984e 23849fsd jhd289 fdh2s39"
  7.         Me.Controls.Add(boton) ' se invoca el boton!
  8.        
  9.         texto.Text = boton.Width
  10.         texto.Location = New Point(70, 70)
  11.  
  12.         Me.Controls.Add(texto)

Me sale "319".

Muchas gracias!

Etiquetas: ancho
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:36.