それぞれ 1 つの TextBox と 1 つの Button を含む 2 つの StackPanels を含むページがあります。
<StackPanel x:Name="Row1">
<TextBox x:Name="TextBox1" Text="" GotFocus="OnFocusHandler" LostFocus="OffFocusHandler"/>
<Button x:Name="Button1" Content="Convert" Click="OnClickHandler" Visibility="Collapsed"/>
</StackPanel>
<StackPanel x:Name="Row2">
<TextBox x:Name="TextBox2" Text="" GotFocus="OnFocusHandler" LostFocus="OffFocusHandler"/>
<Button x:Name="Button2" Content="Convert" Click="OnClickHandler" Visibility="Collapsed"/>
</StackPanel>
私は次のことをしたいと思います:
- テキストボックスにフォーカスがある場合、他のテキストボックスを非表示にし、対応するボタンを表示する必要があります
- テキストボックスの焦点が外れると、元の表示に戻ります: 空のテキストボックスのみが表示されます
- ボタンが OffFocusHandler をトリガーできるようにしたくない
これは、3 つのハンドラーの現在のコードです。
private void OnFocusHandler(object sender, RoutedEventArgs e)
{
TextBox SenderTextBox = (TextBox)sender;
if (SenderPanel.Name == "TextBox1")
{
Button1.Visibility = Visibility.Visible;
}
else if (SenderPanel.Name == "TextBox2")
{
Button2.Visibility = Visibility.Visible;
}
}
private void OffFocusHandler(object sender, RoutedEventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
Button1.Visibility = Visibility.Collapsed;
Button2.Visibility = Visibility.Collapsed;
}
private void OnClickHandler(object sender, RoutedEventArgs e)
{
// some stuff unrelated to my issue
}
OffFocusHandler
ボタンをクリックしてコードをトリガーしないようにするにはどうすればよいですか? これをコーディングする別の方法はありますか?私は完全な初心者なので、正しい方法を考えていないかもしれません。