2017-05-07 56 views
0

我正在嘗試使用richtextboxes來顯示單線數學方程。因此,我可以代表指數是至關重要的。 如圖這裏我已通過改變字體大小和偏移量來實現這一點:以編程方式將backspace輸入到richtextbox中

{ 
     if (state) // superscript 
     { 
      richTextBox1.SelectionCharOffset = offSet; 
      richTextBox1.SelectionFont = new Font("Lucinda Console", 10);  

     } 
     else // normal 
     { 
      richTextBox1.SelectionCharOffset = 0;          
      richTextBox1.SelectionFont = new Font("Lucinda Console", initialFont); 
     } 

    richTextBox1.SelectedText = " ";   

    } 

的碼本體與一個方法中,通過一個複選框稱爲執行。 我遇到的問題是,如果我不追加空格,richtextbox的字符偏移和字體值默認回到名義上,我輸入它的時刻。

我真的不想要空間。我只是用它來保持程序開心。作爲一種解決方法,我試圖以編程方式實現退格。有沒有辦法做到這一點?我嘗試在塊的底部使用這行代碼,但它沒有任何影響:

richTextBox1.Text.Remove(richTextBox1.Text.Length - 1,1);

 private void checkBox1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (checkBox1.Checked) 
     { 
      richTextBox1.SelectionCharOffset = offSet;         // set the CharOffset to display superscript text. 
      richTextBox1.SelectionFont = new Font("Lucinda Console", 10);     // set the superscript font;   
     } 
     else 
     { 
      richTextBox1.SelectionCharOffset = 0; 
      richTextBox1.SelectionFont = new Font("Lucinda Console", initialFont); 
     } 

     richTextBox1.SelectedText = " ";   
    } 
+0

'richTextBox1.Text = richTextBox1.Text.TrimStart();'或'richTextBox1.Text = richTextBox1.Text.Remove(0,1 );' – Nofuzy

+0

@Nofuzy,在RichTextBox上設置'.Text'將** REMOVE **任何現有的格式化......在這種情況下可能不是一個理想的副作用! –

回答

0

剛跑到一個簡單的測試用例和所有你需要做的就是給RichTextBox的FOCUS,使其更新。

變化:

richTextBox1.SelectedText = " "; 

到:

richTextBox1.Focus(); 
+0

恐怕這是行不通的。我現在就試了一下。 SelectionCharOffset和SelectionFonts會更新。只要焦點返回到richtextbox,它們就會恢復到初始值。除非我追加一個空格。 – Rendon

+0

然後你會比你展示的更多,因爲它適合我。使用更多代碼編輯原始帖子,以便我們弄清楚發生了什麼。基本顯示修改/更新RichTextBox的任何內容。 –

+0

請注意我的意見針對Nofuzy上面,如果你從任何地方設置'.Text'它會重置所有格式。你是否在你的代碼中設置了'.Text'? –

相關問題