2012-11-16 37 views
5

के साथ HTML संपादित करना मेरे पास HTML स्ट्रिंग्स के साथ डेटाग्रिडव्यू है। CellDoubleClick ईवेंट का उपयोग करके, मैं वेबब्रोसर नियंत्रण में HTML स्ट्रिंग प्रदर्शित कर रहा हूं।WYSIWYG संपादक

Form1 में

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
{ 
    try 
    { 
     if (e.ColumnIndex != 0 && e.RowIndex != -1) 
     { 
      string s = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); 
      this.f2 = new Form2(s); 
      f2.ShowDialog(); 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); 
    } 
} 

Form2 में

private IHTMLDocument2 doc; 
string reply; 

public Form2(string reply) 
{ 
    InitializeComponent(); 
    this.reply = reply; 
} 

private void Form2_Load(object sender, EventArgs e) 
{ 
    webBrowser1.DocumentText = reply; <--- string from DataGridView 

    IHTMLTxtRange range = doc.selection.createRange() as IHTMLTxtRange; 
    range.pasteHTML(webBrowser1.DocumentText); 
    range.collapse(false); 
    range.select(); 

    doc = webBrowser1.Document.DomDocument as IHTMLDocument2; 
    doc.designMode = "On"; 
} 

उपरोक्त कोड का उपयोग करना, मैं सफलतापूर्वक एक प्लेन टेक्स्ट के रूप में एचटीएमएल स्ट्रिंग प्रदर्शित कर सकते हैं, हालांकि मैं इसे संपादित करने में असमर्थ हूँ। वैकल्पिक रूप से, यदि मैं इस कोड का उपयोग करता हूं:

private IHTMLDocument2 doc; 
private void Form2_Load(object sender, EventArgs e) 
{ 
    webBrowser1.DocumentText = reply; <--- string from DataGridView 

    doc = webBrowser1.Document.DomDocument as IHTMLDocument2; 
    doc.designMode = "On"; 

    IHTMLTxtRange range = doc.selection.createRange() as IHTMLTxtRange; 
    range.pasteHTML(webBrowser1.DocumentText); 
    range.collapse(false); 
    range.select(); 
} 

यह एक खाली रूप होगा, लेकिन मैं इसे लिखने में सक्षम हूं।

मुझे लगता है कि इसे फॉर्म 2_लोड विधि में range.pasteHTML(webBrowser1.DocumentText); के साथ करना है, लेकिन मुझे किसी भी अन्य विधि से अनजान है जो मुझे फॉर्म 2 खोलने पर DataGridView से HTML स्ट्रिंग प्रदर्शित करने की अनुमति देगा।

मैं उपयोगकर्ताओं को HTML स्ट्रिंग को सादे टेक्स्ट के रूप में संपादित करने में सक्षम होना चाहता हूं (जिसके बाद इसे वापस HTML में परिवर्तित किया जाएगा और डेटाग्रिडव्यू में प्रदर्शित किया जाएगा)।

उत्तर

1

यह संभव है! आप डिफ़ॉल्ट WebBrowser नियंत्रण का उपयोग HTML संपादित कर सकते,

  1. "Microsoft.mshtml.dll" फ़ाइल का संदर्भ जोड़ें, यहाँ उपलब्ध।

  2. अपने WebBrowser मान लिया जाये कि "ब्राउज़र" नाम दिया गया है, चयनित पाठ को स्वरूपित करने (browser.Document.DomDocument as mshtml.IHTMLDocument2).designMode = "On";

  3. कॉल Form.Load घटना में इस कोड को जोड़ना निम्नलिखित कार्य:


browser.document.ExecCommand("Bold", false, null); 
browser.document.ExecCommand("Underline", false, null); 
browser.document.ExecCommand("Italics", false, null); 
browser.document.ExecCommand("StrikeThrough", false, null); 
browser.document.ExecCommand("FontName", false, "Times New Roman"); 
browser.document.ExecCommand("FontName", false, "Arial"); 
browser.document.ExecCommand("FontName", false, "etc."); 
browser.document.ExecCommand("FontSize", false, "1"); 
browser.document.ExecCommand("FontSize", false, "2"); 
browser.document.ExecCommand("FontSize", false, "3"); 
browser.document.ExecCommand("InsertUnorderedList", false, null); 
browser.document.ExecCommand("InsertOrderedList", false, null); 
browser.document.ExecCommand("Cut", false, null); 
browser.document.ExecCommand("Copy", false, null); 
browser.document.ExecCommand("Paste", false, null); 
browser.document.ExecCommand("CreateLink", true, null); 

WebBrowser नियंत्रण संपादन की अनुमति नहीं देता है, और केवल वेब पृष्ठों को देखने के लिए डिज़ाइन किया गया है। इसका वास्तव में इंटरनेट एक्सप्लोरर/ट्रिडेंट रेंडरिंग इंजन उन दृश्यों के पीछे काम करता है जो HTML को पार करते हैं और अंतिम पृष्ठ को डीओएम/जेएस समर्थन के साथ पूरा करते हैं। कोई लोकप्रिय ब्राउज़र HTML पृष्ठों, आईएमओ के संपादन का समर्थन करता है, और न ही आईई करता है।