2014-12-03 2 views
0

У меня есть форма, содержащая WebBrowser и контекстное меню.C# Webbrowser Copy

Я хочу отключить функцию копирования в контекстном меню, если пользователь не выбрал (выделить) любой текст на странице с помощью мыши.

Я пытался использовать

IHTMLTxtRange range = currentSelection.createRange() as IHTMLTxtRange; 
if (range != null || range.text.Trim() != "") 
    { 
     MessageBox.Show(range.text); 
     copyToolStripMenuItem.Enabled = true; 
    } 
    else 
    { 
     copyToolStripMenuItem.Enabled = false; 
    } 

, но он не работает для меня.

Error: Empty Selection

Selected Text Display Correctly

ответ

0

Я получил ответ на этот вопрос после отладки приложения

Вот это, если кто нуждается в этом

Проблема была range.text! = «Нулевой "< - null здесь как строка

private void contextMenu_Opening(object sender, CancelEventArgs e) 
     { 
      if (Clipboard.GetDataObject().GetFormats()[0] == System.Windows.Forms.DataFormats.StringFormat) 
      { 
       pasteToolStripMenuItem.Enabled = true; 
      } 
      else 
      { 
       pasteToolStripMenuItem.Enabled = false; 
      } 

      IHTMLDocument2 htmlDocument = MainBrowser.Document.DomDocument as IHTMLDocument2; 
      IHTMLSelectionObject currentSelection = htmlDocument.selection; 
      if (currentSelection.type == "Text") 
      { 
       IHTMLTxtRange range = currentSelection.createRange() as IHTMLTxtRange; 
       if (range.text != "null" || !String.IsNullOrEmpty(range.text.Trim())) 
       { 
        copyToolStripMenuItem.Enabled = true; 
       } 
       else 
       { 
        copyToolStripMenuItem.Enabled = false; 
       } 
      } 
      else 
      { 
       copyToolStripMenuItem.Enabled = false; 
      } 
     }