2016-06-16 3 views
0

フォームの半分を太字にしたRTBがあります。コードはRichTextBoxでTextプロパティが選択されました

 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); 

であり、私は自分のフォームでカスタムメニューのを追加しMenuItemクラスを使用しています。メニューの1つはCopy Selectedevent handlerであり、ユーザーが選択したテキストを貼り付けるためにそのメニューをクリップボードに選択するとトリガーされます。

問題は、ユーザーがテキストを選択せず​​に貼り付けようとしたときに、私がバグである太字(上のRTB)で作成した選択したテキストを貼り付けることです。ユーザーは、単に任意のテキストを選択せず​​にメニューを選択すると、私のハンドラのコード

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がRTB
から太字のテキストを保持している、それが空である必要があります。これを克服する方法は?

答えて

0

あなたは、このようにコードを修正し、追加チェックを入れることができます。

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

、ユーザが選択していないときの状態を経由なっているので、それはまだ....私は太字のために撮影したテキストの長さを持っています任意のテキスト –

関連する問題