У меня есть настраиваемый элемент управления, который содержит TextBox. Пользовательский класс имеет 3 свойства, MinValue, MaxValue и Value, определяемые как так:int.Parse not throwing exception
public int Value
{
get { return int.Parse(text.Text); }
set
{
text.Text = value.ToString();
}
}
public int MaxValue { get; set; }
public int MinValue { get; set; }
Когда TextBox внутри пользовательского класса теряет фокус, следующий метод запуска:
void text_LostFocus(object sender, EventArgs e)
{
Value = Value > MaxValue ? MaxValue : Value;
Value = Value < MinValue ? MinValue : Value;
}
Если TextBox имеет строку, которая больше, чем 2,147,483,647, текст остается неизменным, когда фокус теряется, и исключение не генерируется.
Почему исключение не брошено, и как я могу сделать это так, он будет также установить значения выше, чем Int32.MaxValue
к MaxValue
, а значения ниже, чем Int32.MinValue
к MinValue
?
Где вы ожидаете поймать Исключение? – abto
Он разбивается, как тонна кирпичей, когда я пытаюсь это сделать, вы должны прятать попытку/поймать где-нибудь. Этот подход очень не прав, LostFocus - очень опасное событие, которое смышленно скрыто в дизайнере. Вместо этого используйте событие Validating и используйте int.TryParse(). И обязательно иметь дело с тем, что текст еще не введен. –