문제는 RichTextBox를 폼에 끌어다 놓고 AutoWordSelection 속성을 false로 지정 했는데도
한글이나 MS Word 처럼 텍스트 블록 지정을 마우스로 했을 때 처럼 한글자씩 선택되도록
동작하지 않는 것이다. 구글링을 하던중 발견하였다.
public class CustomRichTextBox : System.Windows.Forms.RichTextBox
{
public CustomRichTextBox()
{
this.AutoWordSelection = false;
this.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
}
private bool _Selecting = false;
private int _StartPosition = 0;
protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e)
{
if (_Selecting)
{
int charPosition = base.GetCharIndexFromPosition(new System.Drawing.Point(e.X, e.Y));
int length = 0;
if (charPosition >= _StartPosition)
{
length = charPosition - _StartPosition + 1;
this.Select(_StartPosition, length);
}
else
{
length = _StartPosition - charPosition;
this.Select(charPosition, length);
}
}
base.OnMouseMove(e);
}
protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
{
this._Selecting = true;
_StartPosition = base.GetCharIndexFromPosition(new System.Drawing.Point(e.X, e.Y));
base.OnMouseDown(e);
}
protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e)
{
this._Selecting = false;
base.OnMouseUp(e);
}
}
-- 출처 : http://social.msdn.microsoft.com/forums/en-US/winforms/thread/9bd9221a-df8e-4c1d-b532-b07cd0de7536/