Пример ниже имеет два текстовых поля. Второй TextBox имеет обработчик для события LostFocus, который вызывает Clear () для себя. Смена фокуса между двумя текстовыми полями работает нормально; однако, если фокус находится на втором текстовом поле, когда окно закрыто, TextBox.Clear () генерирует исключение NullReferenceException. Это ошибка в WPF? Как я могу легко обнаружить эту ситуацию, чтобы избежать вызова Clear () при закрытии окна?
Редактировать: возможно актуально - окно является основным окном приложения. Тест не является нулевым во время вызова Clear (). Исключение выдается откуда-то в вызове.
using System.Windows;
namespace TextBoxClear
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Test_LostFocus(object sender, RoutedEventArgs e)
{
Test.Clear();
}
}
}
<Window x:Class="TextBoxClear.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBox />
<TextBox LostFocus="Test_LostFocus" Name="Test" />
</StackPanel>
</Window>
Ссылка на сборку:
- mscorlib, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089
- PresentationCore, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35
- PresentationFramework, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35
- Система, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089
- WindowsBase, версия = 3.0.0.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35