簡體   English   中英

在同一按鈕上調用 MouseDown 事件后,MouseUp 事件處理程序不起作用 WPF C#

[英]MouseUp event handler not working after MouseDown event is called on the same button WPF C#

我在 C# WPF 表單中有一個顯示密碼按鈕,我想要的是:

  • 當用戶按下任何鼠標按鈕(MouseDown 事件)時,PasswordBox 中的PasswordBox變為可見。
  • 當用戶離開鼠標按鈕按下(MouseUp 事件)時,密碼再次被隱藏。

問題是只有在我們不在同一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM