1

我正在尝试使用一个类生成一个 HTML 文件,但它不会生成多个 HTML 标签,我想知道您是否可以告诉我我可以做什么才能在我的 HTML 文件中生成多个标签。这是代码:

public class GuidClass
{
    public string htmlstringfirst = "<HTML><HEADER><title>My Web-page</title></HEADER><BODY>";
    public string htmlstringend = "</form></BODY></HTML>";
    public string htmlstring = "";
    public GuidClass(string title, string type, string defaultvalue)
    {
        htmlstring += "\r\n<input id = " + '"' + System.Guid.NewGuid().ToString() + '"' + "title =" + '"' + title + '"' + "type=" + '"' + type + '"' + ">" + defaultvalue + "</input><br>";
    }
}


private void button1_Click(object sender, EventArgs e)
{            
    GuidClass objGuid = new GuidClass(textBox1.Text, textBox2.Text, textBox3.Text);
    using (FileStream fs = new FileStream(@"D:\test.htm", FileMode.Create))
    {
        using (StreamWriter writer = new StreamWriter(fs, Encoding.UTF8))
        {
            writer.Write(objGuid.htmlstringfirst + objGuid.htmlstring + objGuid.htmlstringend);
        }
    }
    htmlLoadWebbrowser1.LoadHTML(@"D:\test.htm");
}
4

3 回答 3

1

为什么不使用 WebBrowser 控件,而不是像这样调用它:

 htmlLoadWebbrowser1.LoadHTML(@"D:\test.htm");

你可以这样称呼它

 webBrowser1.Navigate(@"D:\test.htm");

我使用您自己的代码进行了测试,并且可以正常工作。

其次,我认为您也错过了一件小事,但我认为这很重要,即在您的代码中:

public string htmlstringfirst = "<HTML><HEADER><title>My Web-page</title></HEADER><BODY>";

你没有忘记添加表单元素开始标签吗?像这样:

public string htmlstringfirst = "<HTML><HEADER><title>My Web-page</title></HEADER><BODY><form>";
于 2013-04-13T07:42:13.397 回答
1

的构造函数GuidClass附加到htmlstring. 但就目前而言,每次您创建一个新的GuidClass时,它都会有自己的副本htmlstring初始化为一个空字符串,然后附加到构造函数中。

相反,您需要在调用之间存储以前的值。

使其工作的“最少代码更改”方法是更改

public string htmlstring = "";

public static string htmlstring = "";

(其中static意味着类的所有实例共享相同的变量)。

您还需要将调用它的点从 更改objGuid.htmlstringGuidClass.htmlstring

虽然这将使您在短期内工作,但可以进行许多改进以使代码更整洁且更易于维护。Stack Overflow 并不是真正提供此类反馈的地方,但https://codereview.stackexchange.com/上的乐于助人的人将能够为您指明正确的方向。

于 2013-04-13T07:45:11.380 回答
1

而不是使用这种情况下使用web-browser控件,您可以轻松地将元素插入网络 -browser作为一个孩子,使用网络浏览器您有很多优势。

您可以构建页面并保存 html 页面。这是一个简单的示例,但您可以做更多:

//From.cs
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    Html_Class _Html_Class = new Html_Class();
    private void Add_Element_Click(object sender, EventArgs e)
    {
        HtmlElement userelement = _Html_Class.Create_Tag("p");
        userelement.InnerText = "Something";
        _Html_Class.Addend_Child(userelement);
        var s = _Html_Class.Get_Source();
    }

}
//Html_Class.cs
public class Html_Class
{
    private WebBrowser wb = new WebBrowser();

    public Html_Class()
    {
       wb.DocumentText = "<HTML><HEADER><title>My Web-page</title></HEADER><BODY></BODY></HTML>";
    }

    public HtmlElement Create_Tag(string tagname)
    {
        return  wb.Document.CreateElement("tagname");
    }

    public void Addend_Child(HtmlElement element)
    {
        wb.Document.Body.AppendChild(element);
    }

    public string Get_Source()
    {
     return (wb.Document.DomDocument as mshtml.HTMLDocument).documentElement.outerHTML;
    }
}
于 2013-04-13T07:48:24.050 回答