2009-08-27 6 views
4

텍스트 상자/레이블 컨트롤에 대한 사용자 지정 대체품을 쓰고 있습니다. 비슷한 기능을 제공해야하지만 내 응용 프로그램의 맥락에서 최적화되고 (잘하면) 빨라질 것입니다. 다중 행 텍스트 선택을 지원할 수 있어야합니다. 선택한 텍스트를 그릴 수있는 간단한 방법이 있는지 궁금합니다. 지금은 선택 사각형을 그려야하는 위치를 계산하고 수동으로 그릴 수있는 유일한 방법 인 것처럼 보입니다. 이 방법이나 다른 대안을 달성하는 가장 쉬운 방법에 대한 권장 사항을 얻기를 희망했습니다. 감사.선택한 텍스트를 그리는 방법

+2

이 용도로 만든 사용자 지정 UserControl은 기본 제공 컨트롤보다 빠릅니다. 실제로 텍스트 상자 및 레이블을 사용하여 성능 문제가 발생하는 경우 양식에 너무 많은 기회가있을 수 있습니다. – MusiGenesis

+0

나는 아무런 방법이 없다고 말하지 않을 것입니다. 달성하기가 매우 어려울 것 같습니다. 그래서 다른 존재하는 제 3 자 통제를 바라 보는 이유는 그 존재를 기반으로하는 회사가 개량. –

답변

2

System.Windows.Forms.TextRenderer을 사용하십시오. System.Windows.Forms.Control에서

그냥 무시 방법 : 사용자 지정 동작을 구현해야하는 경우 물론

protected override void OnPaint(PaintEventArgs e) 
{ 
    TextRenderer.DrawText(e.Graphics, Text, Font, new Rectangle(0, 0, Width, Height), ForeColor); 
} 

public override Size GetPreferredSize(Size proposedSize) 
{ 
    return TextRenderer.MeasureText(Text, Font); 
} 

, 당신은 OnFontChanged 또는 OnSizeChanged과 같은 몇 가지 더 이벤트를 처리해야합니다.

찾고있는 것이 해당 컨트롤에서 특정 텍스트 (선택한 텍스트)를 타겟팅하는 경우이 article을 살펴볼 수 있습니다. 맞춤법 검사 라이브러리 (SharpSpell)의 소스 코드도이 기사에서 링크됩니다.

0

응용 프로그램의 기본 컨트롤을 다시 작성하는 것은 중요한 작업이므로 절대 최후의 수단 (IMO)이 아니면 않는 한 수행해야합니다. 포함 된 컨트롤이 귀하의 예외 사항을 충족시키지 못한다면, 이러한 컨트롤을 설계하고 지원하는 주위에 비즈니스가 구축 된 타사 컨트롤 라이브러리를 구입하는 것이 좋습니다. Telerik's ASP.NET 컨트롤을 사용하여 많은 성공을 거두었습니다. 다른 컨트롤 라인에 대해 많은 긍정적 인 진술을 보았습니다.

다른 타사 컨트롤 소스도 있습니다.

관련 문제