Men det borde vara en standardklass ...
Just nu ligger det i formuläret, därav tex
- Kod: Markera allt
TextBox TB = (TextBox)sender;
- Kod: Markera allt
private void test_KeyDown(object sender, KeyEventArgs e)
{
TextBox TB = (TextBox)sender;
switch (e.KeyCode)
{
case Keys.Decimal:
string c = Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator).ToString();
if (TB.Text.IndexOf(c) == -1)
{ // Finns inget komma, lägg till plus två nollor.
TB.Text = string.Format("{0}{1}00", TB.Text.TrimEnd(), c);
// Sätt positionen efter komma och marker decimalerna
TB.Select(TB.TextLength -2,2);
}
else
{
// Troligen ej helt ok... Än
TB.Text = string.Format("0{0}00", c);
TB.Select(TB.TextLength - 2, 2);
}
break;
case Keys.Enter:
TB.SelectNextControl(this,
true, // forward
false, // tabStopOnly
false, // nested
true); // wrap
break;
default:
break;
}
}
- Kod: Markera allt
private void test_KeyPress(object sender, KeyPressEventArgs e)
{
int keyvalue = (int) e.KeyChar; // not really necessary to cast to int
TextBox TB = (TextBox)sender;
string c = Convert.ToChar(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator).ToString();
int decimalIndex = TB.Text.IndexOf(c);
// Funkar inte än
if (TB.SelectionStart == TB.TextLength && (decimalIndex == TB.TextLength - 2))
{ //&& (decimalIndex != -1)
e.Handled = true;
return;
}
if ((keyvalue == (int) Keys.Back) ||
((keyvalue >= (int) Keys.D0) && (keyvalue <= (int)Keys.D9)))
{
return;
}
e.Handled = true;
}