Chcę stworzyć TextBox
w aplikacji Windows Form w visual studio, która zawiera tylko określone liczby. na przykład chcę, aby jeden textbox był w stanie zawierać tylko liczby pomiędzy 0
i 1
. Jeśli ma jakąkolwiek inną wartość, chcę, aby pojawił się komunikat z nieprawidłową liczbą. Aplikacja jest napisana w języku C #.
Widziałem ten przykład C # Numeric Only TextBox Control ale jest to numeryczne i chcę określonej liczby.
Edycja: Mój błąd nie był wystarczająco jasny. Próbowałem numericUpDown, ale nie działa dla wszystkich przykładów.W drugim polu chcę mieć wartości od 20 do 340, ale tylko .5 zmiennoprzecinkowe między (20,20.5,21 itp.) i jeśli używam NumericUpDown, jeśli użytkownik wstawia 22.6, komórka go akceptuje i nie chcę tego. Właśnie dlatego pytam, czy możliwe jest kontrolowanie wartości wstawionej za pomocą Textbox lub MaskedTextBox i jeśli jest to odpowiednie, aby użytkownik mógł wprowadzić to pole. Mam nadzieję, że teraz jestem wystarczająco jasny.
Odpowiedzi:
2 dla odpowiedzi № 1Powinieneś użyć a NumericUpDown
.
Możesz go użyć w ten sposób;
NumericUpDown control = new NumericUpDown();
control.Minimum = 0;
control.Maximum = 1;
control.DecimalPlaces = 2; // or something you want.
control.Increment = .01; // step is .01
0 dla odpowiedzi nr 2
utwórz kontrolę użytkownika dziedzicząc TextBox i dodaj wydarzenie dla KeyPress w następujący sposób
public class MyTextBox:TextBox
{
List<int> numberstobeallowed = Enumerable.Range(20, 340 - 20).ToList();
public MyTextBox()
{
this.Leave += new EventHandler(MyTextBox_Leave);
}
void MyTextBox_Leave(object sender, EventArgs e)
{
if (numberstobeallowed.Contains(Convert.ToInt32(this.Text)))
this.Text = string.Empty;
}
}
mam nadzieję że to pomoże