2010-05-19 3 views
1

내 C# 응용 프로그램에서는 포럼 스레드 (저자, 시간, 본문, 제목 등)와 같은 일부 응답을 포함하는 서버에서 xml을 가져옵니다.winform에서 답변을 나열하십시오

이 XML을 얻으면이 답장을 표시하려는 새 양식을 만들고 "답장 추가"단추가있는 작은 텍스트 상자를 만듭니다. 또한 폼에 표시된 회신 목록의 내 자신의 회신에 일부 편집 단추를 사용하고 싶습니다.

답변을 표시하는 가장 쉬운 방법은 웹 브라우저 컨트롤을 양식에 넣고 XML에서 문자열로 전체 HTML 페이지를 생성 한 다음 웹 브라우저 컨트롤에 던져 넣는 것입니다. 그리고 그 아래에 나는 답장 버튼을 추가하여 텍스트 상자를 넣을 수 있습니다. 내 자신의 답장에 편집 기능을 구현할 수있는 방법이 없다는 것을 제외하고는 모든 것이 정상입니다. (링크를 추가 할 수는 있지만 무엇에 대한 링크일까요?)

알고 싶습니다. 다른 컨트롤을 사용하여 winform에서 응답을 표시하는 웹 브라우저 컨트롤 (내 추측은 할 수 없다) 또는 다른 (아마도 간단 할/쉬운) 아이디어에서 해당 편집 이벤트를 가져올 수있는 방법이 있다면

+0

왜 웹 브라우저 컨트롤을 사용하고 있습니까? 나는 그것에서 멀리 움직일 것을 제안 할 것입니다. –

+0

특별한 이유가 없습니다. 내 마음을 초월한 첫 번째 .. –

답변

2

예, 그렇습니다 가능하면 문서의 "디자인 모드"를 켜야합니다. Microsoft.mshtml에 대한 참조를 추가하십시오. 새 Windows Forms 프로젝트를 시작하고 양식에 WB 및 단추를 놓습니다. 코드가 다음과 비슷하게 보이게하십시오 :

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     webBrowser1.DocumentText = "<html><body><textarea rows='15' cols='92' name='post-text' id='wmd-input'></textarea></body></html>"; 
     webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
     button1.Click += button1_Click; 
    } 

    void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { 
     mshtml.IHTMLDocument2 doc = webBrowser1.ActiveXInstance as mshtml.IHTMLDocument2; 
     doc.designMode = "On"; 
    } 

    private void button1_Click(object sender, EventArgs e) { 
     var html = webBrowser1.Document.Body.All["post-text"].InnerHtml; 
     // do something with that 
     //... 
    } 
} 
+0

mshtml.IHTMLDocument2와 같은 webBrowser1.ActiveXInstance는 null 이외의 값을 모두 생성합니다. ActiveXInstance는 문서가 아닌 브라우저의 ActiveX 인스턴스 여야합니다. webBrowser1.Document.DomDocument가 더 좋습니다. –

관련 문제