У меня есть ограничения ввода для текстового поля, что он будет принимать только int и до тех пор, пока он не будет проанализирован Int64. Вопрос в том, что он очищается, потому что он присваивает String.Empty, но что, если Int64 не разбирает его, тогда я хочу отменить это нажатие клавиши. Я попытался добавить код к событию keydown, которое у меня есть, но оно также подавит клавиши Int.
public static void SetInt64Input(Control tb)
{
tb.KeyDown += (sender, e) => {
if (!IsIntKeyOrAlwaysAcceptableKey(e))
//if not int key suppress it; Ex: A,B,.etc
e.SuppressKeyPress = true;
};
tb.TextChanged += (s, e) => ClearAllNonInt64Inputs(tb);
}
private static void ClearAllNonInt64Inputs(Control tb)
{
long i;
if (!Int64.TryParse(tb.Text, out i))
tb.Text = String.Empty;
else
tb.Text = Int64.Parse(tb.Text).ToString();
}
я пытался сделать
if(!Int64.TryParse(((TextBox)sender).Text,out junk)
e.SuppressKeyPress = true;
но это не работает.