[英]MouseUp event handler not working after MouseDown event is called on the same button WPF C#
我在 C# WPF 表單中有一個顯示密碼按鈕,我想要的是:
PasswordBox
變為可見。 問題是只有在我們不在同一個Button
上執行鼠標按鈕按下 (MouseDown) 時才會觸發 MouseUp 事件。 這意味着,如果我們先在Button
上執行MouseDown ,那么之后將不會觸發MouseUp事件。
這是 XAML 代碼:
<Button Grid.Row="1" Grid.Column="2" Margin="10,10,0,0" Width="25" Height="25">
<Image x:Name="showPassword_Button" Source="eye.jpg" MouseDown="showPassword_Button_MouseDown" MouseUp="showPassword_Button_MouseUp"></Image>
</Button>
這是事件處理程序的 C# 代碼:
private void showPassword_Button_MouseDown(object sender, MouseButtonEventArgs e)
{
visiblePassword_TextBox.Text = password_TextBox.Password;
visiblePassword_TextBox.Visibility = Visibility.Visible;
}
private void showPassword_Button_MouseUp(object sender, MouseButtonEventArgs e)
{
// This function does not get called
visiblePassword_TextBox.Visibility = Visibility.Hidden;
password_TextBox.Visibility = Visibility.Visible;
}
您需要在MouseDown
事件處理程序 function 中添加以下內容:
e.Handled = true;
當您執行鼠標按下時,除非您釋放鼠標按鈕,否則不會處理該事件。 所以它會阻止MouseUp 事件。 您需要添加e.Handled = true;
在MouseDown
事件處理程序中,告訴程序該事件已被處理。
function showPassword_Button_MouseDown()
應寫為:
private void showPassword_Button_MouseDown(object sender, MouseButtonEventArgs e)
{
visiblePassword_TextBox.Text = password_TextBox.Password;
visiblePassword_TextBox.Visibility = Visibility.Visible;
e.Handled = true; // Specify that event has been handled
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.