2016-06-16 11 views
0

Ich habe eine RTB in meiner Form, um die Hälfte des Textes fett zu machen. Code istRichTextBox ausgewählt Texteigenschaft

 int start = richTextBox.Text.ToUpper().IndexOf(text.ToUpper()); 
     richTextBox.Select(start, text.Length); 
     richTextBox.SelectionFont = new Font(richTextBox.Font.Name, richTextBox.Font.Size, richTextBox.Font.Style^FontStyle.Bold); 

und ich bin mit MenuItem Klasse benutzerdefinierte Menüs in meinem Formular hinzuzufügen. Eines der Menüs ist Copy Selected wird event handler haben, das ausgelöst wird, wenn Benutzer dieses Menü zum Einfügen ausgewählten Textes in die Zwischenablage auswählen.

Problem ist, wenn Benutzer keinen Text auswählt und versucht, einzufügen, fügt es den ausgewählten Text, den ich für fett (oben in RTB) gemacht, die ein Fehler ist. Code in meinem Handler

void noteCopySelectedMenu_Click(object sender, EventArgs e) 
    { 
     if (sender != null) 
     { 
      MenuItem noteCopyMenu = (MenuItem)sender; 
      ContextMenu noteContextMenu = (ContextMenu)noteCopyMenu.Parent; 
      RichTextBox text = (RichTextBox)noteContextMenu.SourceControl; 
      if (text != null) 
      { 
       // Copy note to Clipboard 
       Clipboard.Clear(); 
       Clipboard.SetDataObject(text.SelectedText, false); 
      } 
     } 
    } 

text.SelectedText hält den Text fett aus RTB
Wenn der Benutzer wählen Sie einfach Menü, ohne Text auszuwählen, sollte es leer sein. Wie bewältige ich das?

Antwort

0

Sie können Ihren Code wie folgt ändern und setzen zusätzliche Kontrollen:

 if (text != null && text.SelectionLength > 0) 
     { 
      // Copy note to Clipboard 
      Clipboard.Clear(); 
      Clipboard.SetDataObject(text.SelectedText, false); 
     } 
+0

es noch die Länge des Textes habe ich für Bold genommen haben .... so ist Bedingung durch immer, wenn der Benutzer nicht auswählt beliebiger Text –