2012-04-30 119 views
1

我想粗體顯示在富文本框中的該字符串的"You >>"部分。C#在RichTextBox中粗體顯示字符串的一部分

以下是我單擊消息發送按鈕時的代碼。 displayBox是其中id爲粗體的字符串,entryBox是用戶輸入消息的地方。

 private void button1_Click(object sender, EventArgs e) 
    { 
     listData.Add(entryBox.Text); 
     // Remove the linebreak caused by pressing return 
     SendKeys.Send("\b"); 


     // Empty the array string 
     ArrayData = ""; 

     // Bold the You >> 
     displayBox.SelectionStart = 0; 
     displayBox.SelectionLength = 6; 
     displayBox.SelectionFont = new Font(displayBox.Font, FontStyle.Bold); 
     displayBox.SelectionLength = 0; 

     foreach (string textItem in listData) 
     { 
      ArrayData = ArrayData + "You >> " + textItem + "\r\n"; 
     } 
     entryBox.Focus(); 
     displayBox.Text = ""; 
     displayBox.Refresh(); 
     displayBox.Text = ArrayData; 
     entryBox.Text = ""; 

    } 

任何幫助將是偉大的。

+1

見http://msmvps.com/blogs/deborahk/archive/2009/10/31/richtextbox-styles.aspx對工作的例子。看起來您在添加文本之前設置了格式 - 它應該是相反的方式(當有東西需要選擇!) – dash

+0

感謝您的鏈接。你是對的,我是在實際字符串被繪製到richText框之前設置格式。我現在唯一的問題是,只有第一個「你」是粗體。任何關於如何爲每個「You >>」實現的代碼指針? – L337BEAN

+0

我已通過您發佈的鏈接幫助解決了該問題。再次感謝@dash – L337BEAN

回答

5

此問題已在評論中的@ dash鏈接幫助下解決。 鏈接:http://msmvps.com/blogs/deborahk/archive/2009/10/31/richtextbox-styles.aspx

這是我的代碼,因爲它現在代表相同的按鈕(儘管我已經重命名了)。這可能不是這個問題的最乾淨的解決方案,但我取得了理想的結果,所以我對此感到滿意。 它在評論中解釋。

 private void send_Click(object sender, EventArgs e) 
    { 
     if (entryBox.Text != "") 
     { 
      listData.Add(entryBox.Text); 
      // Remove the linebreak caused by pressing return 
      SendKeys.Send("\b"); 

      // Empty the array string 
      ArrayData = ""; 

      foreach (string textItem in listData) 
      { 
       ArrayData = ArrayData + "You >> " + textItem + "\r\n"; 
      } 
      entryBox.Focus(); 
      displayBox.Text = ""; 
      displayBox.Refresh(); 
      displayBox.Text = ArrayData; 

      // Format the "You >>" 
      displayBox.SelectionStart = 0; 
      displayBox.SelectionLength = 6; 
      displayBox.SelectionFont = new Font(displayBox.Font, FontStyle.Bold); 
      displayBox.SelectionColor = Color.Crimson; 
      displayBox.SelectionLength = 0; 
      string wordToFind = "You >>"; 
      int startIndex = 0; 
      while (startIndex > -1) 
      { 
       startIndex = displayBox.Find(wordToFind, startIndex + 1, 
           displayBox.Text.Length, 
           RichTextBoxFinds.WholeWord); 
       if (startIndex > -1) 
       { 
        displayBox.Select(startIndex, wordToFind.Length); 
        displayBox.SelectionFont = new Font(displayBox.Font, FontStyle.Bold); 
        displayBox.SelectionColor = Color.Crimson; 
       } 
      } 
      // Reset the entry box to empty 
      entryBox.Text = ""; 

     } 
     // Remove the linebreak caused by pressing return 
     SendKeys.Send("\b"); 
    } 

我希望這可以爲任何人提供類似的問題一些幫助!

:丹

+1

+1良好的工作。當我在評論中留下鏈接時,我通常會回彈並添加答案,因爲在網站關閉或移動內容時,目標鏈接在網絡上消失是非常常見的。你已經在SO上保存了這裏的後代。有很多事情比「,答案只是在這個鏈接」更令人沮喪,點擊,找不到頁面! – dash

+0

謝謝@dash。我確切地知道你的意思! – L337BEAN

相關問題