Hallo allerseits,
ich habe eine Richtextbox zur Eingabe chemischer Formeln also ausschließlich Kombinationen aus Buchstaben und Ganzzahlen. Nun habe ich der Box schon per "OnKeyPress"-Event beigebracht die Fontgröße bei der Tastatureingabe von Zahlen zu verkleinern und bei Buchstaben und anderen Zeichen die Größe beizubehalten.
Nun habe ich eine TreeView aus der ich bei "SelectedItemDoubleClick" eine hinterlegte Formel direkt in die RTB übertrage (so eine Art Standardformelsammlung um dem User das Leben leichter zu machen). Natürlich wird der String korrekt übertragen allerdings, da es sich hierbei NICHT um eine Tastatureingabe handelt, wird die Schriftgröße für Zahlen nicht verkleinert.
Mein Ansatz war nun den Gesamtstring der RTB auszulesen, via .ToCharArray() in ein CharArray zu lesen und dann Char für Char wieder in die RTB zu schreiben und dabei natürlich auf IsNumeric zu parsen.
PROBLEM: Leider gelingt es mir nicht für den Fall das eine Zahl erkannt wird die Fontgrößenänderung anzustossen.
Anbei der Quellcode in Ausschnitten:
Für Hilfe und/oder Vorschläge bin ich sehr dankbar.
Greeds Rando
ich habe eine Richtextbox zur Eingabe chemischer Formeln also ausschließlich Kombinationen aus Buchstaben und Ganzzahlen. Nun habe ich der Box schon per "OnKeyPress"-Event beigebracht die Fontgröße bei der Tastatureingabe von Zahlen zu verkleinern und bei Buchstaben und anderen Zeichen die Größe beizubehalten.
Nun habe ich eine TreeView aus der ich bei "SelectedItemDoubleClick" eine hinterlegte Formel direkt in die RTB übertrage (so eine Art Standardformelsammlung um dem User das Leben leichter zu machen). Natürlich wird der String korrekt übertragen allerdings, da es sich hierbei NICHT um eine Tastatureingabe handelt, wird die Schriftgröße für Zahlen nicht verkleinert.
Mein Ansatz war nun den Gesamtstring der RTB auszulesen, via .ToCharArray() in ein CharArray zu lesen und dann Char für Char wieder in die RTB zu schreiben und dabei natürlich auf IsNumeric zu parsen.
PROBLEM: Leider gelingt es mir nicht für den Fall das eine Zahl erkannt wird die Fontgrößenänderung anzustossen.
Anbei der Quellcode in Ausschnitten:
Code:
public void ChangeFontSize(float fontSize)
{
int len = rtb_Summenformel.SelectionLength;
// If len <= 1 and there is a selection font, amend and return
if (len <= 1 && rtb_Summenformel.SelectionFont != null)
{
rtb_Summenformel.SelectionFont =
new Font("Microsoft Sans Serif", fontSize, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
return;
}
}
#region Parser für Groß- und Kleinschreibung bei Übernahme Summenformel aus TreeView
private void RichTextBoxUpdate()
{
string zupruefenderstring = rtb_Summenformel.Text;
char[] array = zupruefenderstring.ToCharArray();
rtb_Summenformel.Clear();
foreach (char c in array)
{
if (IsNumeric(c))
{
ChangeFontSize(7);
rtb_Summenformel.Text += c.ToString();
}
else
{
ChangeFontSize(15);
rtb_Summenformel.Text += c.ToString();
}
}
}
public static bool IsNumeric(object value)
{
try
{
int i = Convert.ToInt16(value.ToString());
return true;
}
catch (FormatException)
{
return false;
}
}
#endregion
Für Hilfe und/oder Vorschläge bin ich sehr dankbar.
Greeds Rando

Zuletzt bearbeitet: