2010-09-09 12 views
7

Tengo un control RichTextBox en una aplicación y aquí está mi problema: cuando la aplicación se ejecuta, si comienzo a seleccionar con el mouse algunos de los caracteres dentro de una palabra y continúo seleccionando fuera de ella, la selección incluye automáticamente palabra completa en la que comencé la selección y cualquier otra palabra de la que desee seleccionar solo una parte, ms word-ish, si no me equivoco.C# RichTextBox problema de selección

por ejemplo:

  • el texto es: "Sólo otro foobar"
  • lo que quiero para seleccionar es: "Sólo ano [Ther foo] bar" (la cosa entre el [])
  • lo que realmente está seleccionado: "Sólo [otra foobar]"

el problema es sólo con la selección del ratón, si selecciono texto con el teclado funciona muy bien. Además, la propiedad de selección de palabra automática del control está desactivada. ¿Alguna idea de por qué es eso?

+0

Hrm. ¿Esto fue arreglado? http://connect.microsoft.com/VisualStudio/feedback/details/115441/richtextboxs-autowordselection-property-does-not-work-correctly –

+0

Hmm ... Creo que es eso. ¿Tienes alguna idea de una solución alternativa? – cantrem

Respuesta

13

Hay un error tonto en la implementación de la propiedad AutoWordSelection. La solución alternativa es igualmente tonta. Agregue una nueva clase a su proyecto y pegue el código que se muestra a continuación. Compilar. Coloque el nuevo control desde la parte superior de la caja de herramientas en su formulario, reemplazando el RTB existente.

using System; 
using System.Windows.Forms; 

public class FixedRichTextBox : RichTextBox { 
    protected override void OnHandleCreated(EventArgs e) { 
     base.OnHandleCreated(e); 
     if (!base.AutoWordSelection) { 
      base.AutoWordSelection = true; 
      base.AutoWordSelection = false; 
     } 
    } 
} 

me dejó una anotación en la parte inferior de esta MSDN Library page con los detalles del error.

+0

Eso fue totalmente cojo ... pero gracias, lo intentaré lo antes posible. ¡Finalmente experimento algunos de los errores de .net! – cantrem

+0

... y de hecho, funciona. ¡Gracias de nuevo! – cantrem

+0

Tengo una recompensa por una pregunta relacionada con el error RichTextBox: http://stackoverflow.com/questions/19256004/richtextbox-selection-bug-when-pressing-control-key ¿tiene alguna idea? –

2

Tal vez las cosas han cambiado desde que se respondió a esta pregunta, pero tengo una solución aún más simple:

Sólo añadir richTextBox1.AutoWordSelection = false; al código.

Suena loco, pero establecer esto en false en el cuadro de propiedades no funciona. Tienes que hacerlo en el código, incluso si la propiedad ya es falsa. ¡Entonces funciona!