Es posible marcar/seleccionar la parte del texto en un Formulario Windows forms control de etiqueta? Sé que es posible con RTFtextbox control, sino que el uso que el control sería una exageración, ya que los necesitan para crear varias instancias de la etiqueta.

  • ¿Qué entiende usted por «elegir»? Te refieres a seleccionar por código, el uso de este texto después?
  • lo siento @ John…by seleccione me refiero a la selección de texto por ejemplo, en el RichTextBox puede utilizar «SelectedText», etc propiedades para seleccionar o resaltar una parte de la totalidad del texto. El efecto es similar a la selección/el resaltado de texto manualmente con el ratón.
  • Es solo una idea: se podría crear una clase derivada de la Etiqueta en la que tiene una propiedad para almacenar de inicio y finalización de índice de texto para ser seleccionado, a continuación, reemplazar evento onPaint puede resaltar el texto en el dibujo de un semitransparentes rectángulo sobre él
InformationsquelleAutor tunafish24 | 2011-10-13

7 Comentarios

  1. 85

    Es posible seleccionar texto en un formulario Windows de la etiqueta? – NO (Al menos no de manera fácil sin necesidad de reemplazar la Etiqueta.Método Paint)

    Usted puede cambiar fácilmente de un cuadro de texto para este propósito.

    TextBox1.Text = "Hello, Select Me";
    TextBox1.ReadOnly = true;
    TextBox1.BorderStyle = 0;
    TextBox1.BackColor = this.BackColor;
    TextBox1.TabStop = false;

    No creen? aquí es un ejemplo para usted.

    Es posible seleccionar texto en un formulario Windows de la etiqueta?

    • El problema que podría tener es que si va a ajustar el texto de la texbox dinámicamente va a ocultar el texto si es más amplio que el cuadro de texto, a diferencia de la etiqueta.
    • debes establecer un «ajuste de línea» a «true».
    • Si es necesario, también puede establecer Multiline = True a ser capaz de cambiar la altura de la caja de texto.
    • Este es un enfoque válido, me gustaría recomendar @vmil la respuesta de abajo (que es la funcionalidad por defecto de las etiquetas es que el doble clic en una etiqueta, copia el texto).
  2. 12

    Como Bala R respondió:

    «Usar un TextBox con la propiedad BorderStyle de conjunto a Ninguno, y Readonly establece en true
    y Backcolor para que coincida con el contenedor.».

    Si la cadena de Texto es muy largo, y el Width de la TextBox no es suficiente para mostrar todo el texto, entonces se puede establecer la Width propiedad de la TextBox para mostrar todo el Texto.

    Si usted necesita saber el número correcto para Width, entonces usted puede utilizar el MeasureString método de Graphics para esto. Usted puede obtener la instancia de CreateGraphics() método de la Control (TextBox en este caso).

    Primer parámetro es el cuadro de texto del Texto, y el segundo parámetro es el cuadro de texto de la Fuente. Esta función devuelve SizeF struct. Usted necesita sólo el Ancho de la propiedad de la misma, convertirlo a entero con (int)size.Width o (int)Math.Round(size.Width).

    No te olvides de llamar la Dispose() método de la instancia de graphics después, porque no la necesito.


    Usted puede escribir su propia función que va a hacer todo este proceso:

    static void SetText(TextBox textBox, string str)
    {
       Graphics graphics = textBox.CreateGraphics();
       SizeF size = graphics.MeasureString(str, textBox.Font);
       graphics.Dispose();
       textBox.Width = (int)Math.Round(size.Width);
       textBox.Text = str;
    }
  3. 7

    No, no es posible seleccionar texto en el Formulario Windows de la Etiqueta. Se puede utilizar un cuadro de texto de sólo lectura para este.

  4. 5

    Utilizar un TextBox con BorderStyle conjunto para None y Readonly conjunto para true y Color para que coincida con el contenedor.

  5. 4

    Doble clic en una etiqueta va a copiar el texto al portapapeles. Este es el comportamiento predeterminado de Windows Forms etiquetas.

    • Este es uno de esos casos donde el tiempo ha cambiado lo que la respuesta correcta es, pero no hay una buena manera de ir sobre la fabricación de la respuesta más conocido.
    • Esta es una característica oculta, la mayoría de los usuarios no figura este, lo más probable es que intente seleccionar el texto y presione Ctrl+C.
  6. 3

    Usted no será capaz de resaltar una parte del texto en una etiqueta. Sin embargo, puede utilizar una imagen y ajuste a la Etiqueta.Las propiedades de la imagen si el texto de estas etiquetas es estático.

    • va a ser muy difícil de implementar, además de que el texto es dinámico – es por eso la necesidad de destacar algo de él.
  7. 0

    Sé que esta pregunta es acerca de la selección de partes del texto de una etiqueta pero supongo que el texto se vayan a colocar en el portapapeles.

    Así que si no te importa copiar todo el texto, sólo tiene que establecer un Click evento en la etiqueta para copiar el texto al portapapeles:

    myLabel.Click += new System.EventHandler(MyLabel_Click);
    
    //...
    
    private void MyLabel_Click(object sender, EventArgs e)
    {
       Clipboard.SetText(myLabel.Text);
    }
    • Haga doble clic en una etiqueta va a copiar el texto al portapapeles. Este es el comportamiento predeterminado de Windows Forms etiquetas. No hay necesidad de hacer esto por sí mismo.

Dejar respuesta

Please enter your comment!
Please enter your name here