2013-04-13 42 views
1

我想用一個類來生成一個HTML文件,但它不會生成多個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"); 
} 
+0

你是什麼意思與'如何生成多個tags'?什麼樣的標籤?使用循環。 – I4V

+0

我的表單中有一個按鈕和三個文本框,每當我點擊按鈕時,我都希望將文本框的值添加到我的html文件中。 但是,每當我點擊我的按鈕,它重置是值。 – Pedram

+1

'objGuid.htmlstring + = textBox1.Text;'? – I4V

回答

1

而不是使用這種情況下使用web-browser控制 作爲一個孩子,你可以很容易地將元素插入到web-browser與Web瀏覽器,你有很多優勢。

,你可以建立你的網頁並保存HTML page.this是一個簡單的例子,但是你可以做更多:

//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; 
    } 
} 
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>"; 
+0

謝謝我忘記了標籤「

」,但這不是問題,問題是這個班級應該讓我能夠在我打電話時添加一個HTML標籤,但它只生成一個標籤 謝謝 – Pedram

1

GuidClass構造被追加到htmlstring。但就目前而言,每次創建新的GuidClass時,它都將擁有自己的htmlstring副本,該副本初始化爲空字符串,然後附加到構造函數中。

相反,您需要在調用之間存儲以前的值。

「最小代碼變化」的方式來得到這個工作是改變

public string htmlstring = ""; 

public static string htmlstring = ""; 

(其中static意味着同一個變量的類的所有實例共享) 。

您還需要將其調用的點從objGuid.htmlstring更改爲GuidClass.htmlstring

雖然這會讓你在短期內工作,但可以進行很多改進,使代碼更加整潔和易於維護。堆棧溢出並不是真正意義上的反饋類型,但https://codereview.stackexchange.com/的幫助人員將能夠指出您正確的方向。