2017-05-07 2 views
0

Ich versuche, Richtextboxen zu verwenden, um einzeilige mathematische Gleichungen anzuzeigen. Daher ist es wichtig, dass ich Exponenten repräsentieren kann. Ich habe dies erreicht, indem die Schriftgrößen ändern und Offsets wie hier gezeigt:programmgesteuert Rücktaste in richtextbox eingeben

{ 
     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 = " ";   

    } 

Dieser Körper von Code wird mit einem Verfahren ausgeführt, durch eine Checkbox genannt. Das Problem, das ich habe, ist, dass, wenn ich kein Leerzeichen angehängt habe, der Char-Offset und die Font-Werte der Richtextbox in dem Moment, in dem ich sie eintrage, auf nominal zurückgesetzt werden.

Ich möchte nicht wirklich einen Platz. Ich benutze es nur, um das Programm glücklich zu machen. Als Workaround versuche ich, eine Rücktaste programmgesteuert zu implementieren. Gibt es eine Möglichkeit, dies zu tun? Ich habe versucht, diese Codezeile am unteren Rand des Blocks zu verwenden, aber es hatte keine Wirkung:

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();' oder 'richTextBox1.Text = richTextBox1.Text.Remove (0,1); ' – Nofuzy

+0

@Nofuzy, Einstellung' .Text' auf der RichTextBox wird ** entfernen ** alle bestehenden Formatierung ... wahrscheinlich kein wünschenswertes Nebeneffekt in diesem Szenario! –

Antwort

0

lief einfach einen einfachen Testfall und alles, was Sie tun müssen, ist die RichTextBox FOCUS geben zu machen, zu aktualisieren.

Wechsel:

richTextBox1.SelectedText = " "; 

An:

richTextBox1.Focus(); 
+0

Ich fürchte, das funktioniert nicht. Ich habe es gerade versucht. Die SelectionCharOffset und SelectionFonts werden aktualisiert. Sie kehren einfach zu ihren ursprünglichen Werten zurück, sobald der Fokus auf die Richtextbox zurückkehrt. Es sei denn, ich füge ein Leerzeichen hinzu. – Rendon

+0

Dann ist mehr los als du gezeigt hast, denn es funktioniert gut für mich. Bearbeiten Sie Ihren ursprünglichen Beitrag mit mehr Code, damit wir herausfinden können, was vor sich geht. Zeige grundsätzlich alles, was deine RichTextBox verändert/aktualisiert. –

+0

Notieren Sie sich meinen oben auf Nofuzy gerichteten Kommentar, wenn Sie '.Text' von überall einstellen, wird die gesamte Formatierung zurückgesetzt. Setzen Sie '.Text 'irgendwo in Ihrem Code? –