2009-10-14 4 views
1

위의 목표는 달성하기가 다소 어렵다는 것을 알고 있지만, 수행 할 수 있음을 알고 있습니다.IDE 에서뿐만 아니라 작동하는 vb.net에 대한 효율적이고 깜박임없는 구문 highligher

내가 만든 사람은 무엇을 :

그것은 일치의 경우, 물리적으로 텍스트를 선택하고 색상을 변경하고, 마침내에 캐럿을 반환합니다 목록에서 단어에 각 단어를 비교

그것이 강조되었을 때의 위치. 이와

문제 :

  • 점멸. 항상 깜박입니다. 나는 스레드가 50 밀리 초 동안 잠자기 상태가되도록하여 깜박임 현상을 줄 였지만, 완전히 제거하지 못했습니다. (타이핑도 느려지지 않았습니다.) 자, 내가 시도한 또 다른 점은 두 번째 RichTextBox를 사용하여 강조 표시를하는 것이지만 전혀 별다른 차이가 없다는 것입니다.

  • 스크롤링. 텍스트의 크기가 커서 스크롤 막대가 나타나기에 충분할 경우 RichTextBox를 스크롤합니다.

  • 텍스트 삭제 중. 강조 표시된 단어의 일부를 삭제하면 단어가 변경된 경우에도 색상 서식이 유지됩니다. Itll은 또한 전체 단어를 물리적으로 선택하기 때문에 끝없이 나를 당황하게합니다.

  • 창 닫기. RichTextBox의 TextChanged 이벤트가 호출 될 때마다 강조 서브 루틴이 호출되기 때문에 분명히 창이 닫힐 때 해고됩니까? 그러나 창이 닫히기 때문에 전체 프로세스의 속도가 느려지므로 큰 파일의 경우 각 키워드를 강조 표시하고 강조 표시하는 데 5-10 초가 걸릴 수 있습니다.

어떻게 이러한 문제를 해결할 수 있습니까? 나는 다른 사람의 구성 요소를 사용하고 싶지 않고, 특별히 내 자신을 사용하고 싶습니다.

도움을 주셔서 감사합니다. 몇 시간을 보냈으며 지금까지 결과에 만족합니다.

어떤 아이디어를 내가 있었다 :

  • 물리적으로 대신 텍스트 색상을 변경하는 방법에 내장이 내 모든 문제를 없애 것이다 사용의 RTF를 편집 할 수 있습니다. 키워드가 "The"(예를 들어)라고 가정하면 rtf가 파란색으로 바뀌게하려면 어떻게해야할까요? 비주얼 스튜디오에서 일뿐만 아니라 작동하여 RichTextBox에 대한 구문 형광펜 :

  • 구문 강조 (여기 최후의 수단)

내 최종 목표를 사용하지 마십시오.

편집 : RichTextBox보다 더 나은 다른 구성 요소가 있습니까?

답변

1

I을 Windows.Forms 또는 WPF 여기 있는지 모르지만 Windows.Forms 인 경우 몇 년 전에이 문제에 대한 블로그 게시물을 작성하여 신청할 수 있습니다. 나는 채팅 프로그램을 위해 이것을했으며 잘 작동했다. Blog post is here.

+0

Winforms, thanks! 귀하의 게시물을 확인하십시오. – Cyclone

1

구문 강조를 위해 RichTextBox를 사용하지만 C#에서는 this page을 사용하는 것으로 나타났습니다. 그러나, 당신이 가지고있는 깜박임에 대해 second post가 말하고 있다는 점은 그들의 해결책이 도움이 될지 확신 할 수 없습니다. 텍스트가 바뀔 때마다 강조 표시를 다시 확인하는 것처럼 보입니다. 변경된 단어가 강조 표시된 상태에서 문제가 해결되어야합니다.

또한 CodeProject에 관한 매우 철저한 기사 인 Real Time Syntax Highlighting with Visual Basic은 꼭 읽어 볼 가치가 있습니다.

구성 요소의 경우, this question이 이에 해당합니다.

내가 오해 한 경우 죄송합니다.

+0

전에 초점을 맞춘 경우를 보았다 다시 설정 한 후 초점을 제거하여 일시적으로 그것을 해결,하지만 난 작업 하이라이트에 대한 수정을 얻을 couldnt한다. – Cyclone

+0

에서와 같이 효과가 없었습니까? 아니면 오류를 생성하고 컴파일하지 않을까요? –

+0

눈에 보이는 효과 없음 : ( – Cyclone

0

Sharp Develop의 소스 코드를 살펴보고 해당 편집기가 완벽하게 작동하며 깜박임없이 강조 표시 할 수 있습니다. 또한

당신은 "C#을 응용 해부 - 내부 샤프가 개발을"이라는 자신의 책의 사본을 잡아 얻을 수 있다면 편집기에 전용 몇 장 가지고, - 강조, 데이터 구조, UI

+0

내가 필요로하는 것을 찾기 위해 너무 많은 코드를 파고 들지만 어쨌든 덕분에! – Cyclone

0

Scintilla, 그것은 무료이며 오픈 소스입니다. 그것은 많은 언어를 지원하고 사용하기 쉽습니다. Visual Studio 용 실시간 구문 강조 형광등 추가 기능이며 작동하기위한 코드가 거의 필요하지 않으며 사전 IDE를 만들 수있는 600 개의 도구가있어서 추가 기능이 완벽하고 완벽하게 편집 할 수 있습니다.

0

richtextbox에 포커스가 없으면 깜박이지 않습니다. 나는 그것이

Dim lWasIFocused As Boolean = Me.Focused 
' Removes flicker when i am not focused 
Parent.Focus() 

' enter your code here 

If lWasIFocused Then Me.Focus(