2011-02-25 8 views
-1

전 국가로 확장되는 네트워크를 통해 사용되는 다용도 응용 프로그램을 작성했습니다. 이 응용 프로그램의 한 부분은 하나의 스테이션이 전체 화면 모드에서 실행되는 소프트웨어를 사용하여 다른 스테이션 또는 모든 스테이션과 통신 할 수있는 주문 와이어 시스템입니다.다른 색상으로 특정 텍스트를 표시하는 채팅 창 만들기 WPF 4

WPF를 사용하면 WPF의 RichEditBox 컨트롤을 사용할 때 유지하고 싶었던 아름다운 색 구성표와 섹시한 인터페이스가 있습니다. 마지막으로 풍부한 편집 컨트롤을 사용했을 때는 MFC의 안녕하십니까. WPF로 작업을 수행하려는 무례한 충격을 받았습니다.

그러니까 기본적으로 무슨 일 (마찬가지로 대부분의 채팅 앱) 사용자가 메시지를 보낼 때,

"사용자 이름 : 메시지 ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ"텍스트 상자에 표시됩니다. 내가 원했던 것은 UserName을 갖는 것이 었습니다. 하나는 컬러이고 다른 하나는 메시지입니다. 간단한 생각.

나는 약간의 자습서를 읽고, 약간의 머리카락을 찢어 내고, 싫은 내 키보드를 던지며 등을 밀어 붙였다. 다시 돌아와 또 다른 균열이있다. 내가 읽었던 기사가 너무 복잡해서 프로그램을 느리게 만들거나 내가 필요로하지 않는 것을 만들었습니다. 그래서 저는이 간단한 접근 방식을 생각해 냈습니다. 제 솔루션을 더 나은 것으로 무상 개정 해주십시오. 이것은 정확하게 내가하고 싶었던 일을합니다.

죄송합니다. 단계별 접근 방식이 n00b에 대한 것이므로, 나는 경험이 부족한 분들을 위해 우리 모두가 한 번 생각한대로 설명하려고 노력하고 있습니다.

<RichTextBox x:Name="textbox_chat_wnd" Height="100" Background="#FF2A2D30" IsReadOnly="True"> 
    <FlowDocument Name="flowdoc_chat_wnd"/> 
</RichTextBox> 

그래서 RichTextBox라는 이름의 RichTextBox를 만들고 흐름 문서라는 이름을 지정했습니다.

다른 사용자로부터 내 메시지를 받았으므로 이제 strMessage 문자열에 저장됩니다. 좋은. 메시지는 세미 콜론으로 구분 그것과 메시지를 보낸 사람의 사용자 이름, 따라서 내가 왜 그것에 사항 String.split를 호출 오전 :

//Split message by first semi-colon. Ignore all others 
string[] strSplit = strMessage.Split(new string[]{":"}, 2, StringSplitOptions.None); 

//Create new paragraph and set line spacing to 1. Prevents massive line gaps 
Paragraph p_Paragraph = new Paragraph(); 
p_Paragraph.LineHeight = 1; 

//Create Run object that contains the name of the user + semicolon 
//then set the colour of the text. 
Run r_User = new Run(strSplit[0] + ": "); 
r_User.Foreground = Brushes.GreenYellow; 

//Message run object, set colour. 
Run r_Message = new Run(strSplit[1]); 
r_User.Foreground = Brushes.Silver; 

//Add the two run objects to our paragraph: 
p_Paragraph.Inlines.Add(r_User); 
p_Paragraph.Inlines.Add(r_Message); 

//Add the paragraph to the flow document as a block 
flowdoc_chat_wnd.Blocks.Add(p_Paragraph); 

//Scroll to the end of the control 
textbox_chat_wnd.ScrollToEnd(); 

나는이 사람을 도움 분명하다 희망 달성하려는 목표와 방법을 이해하기에 충분합니다.

다시 말해서 나는 이것을 달성하고 생각을 듣는 개선 된 방법을 기대합니다.

감사합니다,

애쉬

+0

이것이 도움이 될 수 있지만 SO는 기술적 인 토론 포럼이 아닌 대답 사이트입니다. – Robaticus

+0

@Robaticus 나는 그 질문에 대한 질문을 구했을 까? –

+0

예, 그렇지만이 사이트가 작동하는 방식이 아닙니다. – Robaticus

답변

1

나는 몇 시간 전에 유사한 채팅 응용 프로그램 쓰고 난 이모티콘을 표시 뒤에 HTMLDocument의 개체를 수정하고 색상 변경을 위해 HTML을 사용하여 웹 브라우저 컨트롤을 사용했다. 나는 그 시간에 WPF RichTextBox 컨트롤을 약간 테스트했는데 간단한 Add (새 Run()) Add (새 단락()) 시나리오에서 약 1000 줄을 추가 한 후 아주 느려졌습니다. (편집 기능이 필요하지 않는 한) 채팅 응용 프로그램에서 괜찮은 WebBrowser 컨트롤을 사용했습니다.

+0

감사합니다 Andrei.나는 당신이 한 것처럼 WebBrowser 컨트롤을 사용하는 것을 고려하고 있었고, 다시 들여다 볼 수도있었습니다. –

관련 문제