Вы можете получить доступ к вашему объекту текстового поля, и фактически в вашем примере текстовое поле не является тем, которое вызвало исключение.
Пример WPF:
int number;
try
{
number = int.Parse(textBox1.Text);
}
catch (FormatException)
{
textBox1.Background = new SolidColorBrush(Colors.Red);
}
Хотя для этого конкретного примера лучше использовать TryParse
.
Если ваш объект доступен только внутри вашего метода Validate и метод validate не удался, и вы хотите сделать этот объект доступным внутри catch
, вам нужно реализовать пользовательское исключение, которое будет иметь поле типа TextBox в этом случае.
[Изменить]
Мне кажется, я неправильно понял вопрос.
Пользовательское исключение
public class MyException : Exception
{
public TextBox TextBox { get; private set; }
public MyException(TextBox textBox)
{
TextBox = textBox;
}
}
Анализ, проверка или любой другой метод:
public int Parse()
{
try
{
return int.Parse(textBox1.Text);
}
catch (FormatException)
{
throw new MyException(textBox1);
}
}
Использование:
int number;
try
{
number = int.Parse(textBox1.Text);
}
catch (MyException exception)
{
exception.TextBox.Background = new SolidColorBrush(Colors.Red);
}