Im Textfeld nur führendes Minus, Zahlen, Komma und best. Tasten erlauben

using System.Globalization;

// nur Eingabe von führendem Minus, Zahlen, ein Dezimaltrennzeichen und Backspace in der Textbox zulassen
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (sender is TextBox)
    {
        TextBox tb = sender as TextBox;

        // Merker für Bedingungen
        bool bOk = true;

        // wenn das Eingabezeichen ein kulturunabhängiges Dezimaltrennzeichen ist
        if (e.KeyChar.ToString() == NumberFormatInfo.InvariantInfo.NumberDecimalSeparator)
        {
            // überprüfen, ob in der Textbox schon ein Dezimaltrennzeichen steht,
            // um Doppelungen zu vermeiden
            bOk = (tb.Text.IndexOf(NumberFormatInfo.InvariantInfo.NumberDecimalSeparator) < 0);
        }

        // wenn das Eingabezeichen ein führendes Minus ist
        if (e.KeyChar.ToString() == NumberFormatInfo.InvariantInfo.NegativeSign)
        {
            // überprüfen, ob in der Textbox schon ein führendes Minus steht,
            // um Doppelungen zu vermeiden
            bOk = ((tb.SelectionStart == 0) && (tb.Text.IndexOf(NumberFormatInfo.InvariantInfo.NegativeSign) < 0));
        }

        if (bOk)
        {
            // Liste mit erlaubten Zeichen, in diesem Fall
            // führendes Minus, Zahlen, Dezimaltrennzeichen, Backspace
            string sChars = NumberFormatInfo.InvariantInfo.NegativeSign + "0123456789" + NumberFormatInfo.InvariantInfo.NumberDecimalSeparator + "\b";

            // testen, ob das Zeichen erlaubt ist (in der Liste vorhanden ist)
            e.Handled = (sChars.IndexOf(e.KeyChar) < 0);
        }
        else
        {
            // sonst Eingabezeichen verwerfen
            e.Handled = true;
        }
    }
}