C# 在winform中列出答复

C# 在winform中列出答复,c#,.net,winforms,webbrowser-control,C#,.net,Winforms,Webbrowser Control,在我的C#应用程序中,我从服务器上获取一个xml,其中包含一些回复,如论坛线程中的回复(包含作者、时间、正文、标题等元素) 当我得到这个xml时,我创建了一个新的表单,希望在其中显示这些回复,以及一个带有“添加回复”按钮的小文本框。我还想在表单中显示的回复列表中,在我自己的回复上添加一些编辑按钮 我想到的显示回复的最简单方法是在表单中放置一个web浏览器控件,从xml生成一个字符串形式的完整html页面,然后将其放入该web浏览器控件中。在它下面,我可以把文本框和添加回复按钮。 一切都很好,只是

在我的C#应用程序中,我从服务器上获取一个xml,其中包含一些回复,如论坛线程中的回复(包含作者、时间、正文、标题等元素)

当我得到这个xml时,我创建了一个新的表单,希望在其中显示这些回复,以及一个带有“添加回复”按钮的小文本框。我还想在表单中显示的回复列表中,在我自己的回复上添加一些编辑按钮

我想到的显示回复的最简单方法是在表单中放置一个web浏览器控件,从xml生成一个字符串形式的完整html页面,然后将其放入该web浏览器控件中。在它下面,我可以把文本框和添加回复按钮。 一切都很好,只是我不知道如何在我自己的回复上实现编辑功能(我的意思是我可以在那里添加一个链接…但是链接到什么)


我想知道是否有一种方法可以从web浏览器控件(我猜我不能)获取编辑事件,或者另一种(可能很简单/简单)方法,即使用其他控件在winform中显示回复是的,这是可能的,您想为文档打开“设计模式”。添加对Microsoft.mshtml的引用。启动一个新的Windows窗体项目,并在窗体上放置一个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
        //...
    }
}
公共部分类表单1:表单{
公共表格1(){
初始化组件();
webBrowser1.DocumentText=“”;
webBrowser1.DocumentCompleted+=新的WebBrowserDocumentCompletedEventHandler(webBrowser1\u DocumentCompleted);
按钮1.点击+=按钮1\u点击;
}
作废webBrowser1\u DocumentCompleted(对象发送者,WebBrowserDocumentCompletedEventArgs e){
mshtml.IHTMLDocument2 doc=webBrowser1.ActiveXInstance为mshtml.IHTMLDocument2;
doc.designMode=“On”;
}
私有无效按钮1\u单击(对象发送者,事件参数e){
var html=webBrowser1.Document.Body.All[“post text”].InnerHtml;
//做点什么吧
//...
}
}

使用webbrowser控件的任何其他原因?我建议你不要那样做没有特殊原因。。只是我想到的第一件事..不确定webBrowser1.ActiveXInstance作为mshtml.IHTMLDocument2会产生除null以外的任何结果。ActiveXInstance应该是浏览器的ActiveX实例,而不是文档。webBrowser1.Document.DomDocument应该更好。