簡體   English   中英

自定義用戶控件的焦點控件

[英]Focus control for Custom User Control

我有一個這樣定義的UserControl:

UserControl
  TextBox
  Button (Clear)

我在UserControl上有一個GotFocus處理程序,因此只要它獲得焦點,它就會調用TextBox.Focus() 我遇到的問題是,如果單擊“清除”按鈕,它將清除文本,然后重新聚焦到文本框,從而觸發控件上的兩個GotFocus事件。 我希望這可以充當:

  • 一場GotFocus活動
  • 一個GotFocus事件(按鈕),一個LostFocus事件(按鈕),一個GotFocus事件(文本框)

我玩過FocusManager.IsFocusScope無濟於事。 在我致電Textbox.Focus之前,是否還有辦法觸發手動LostFocus嗎?

在您的GotFocus事件中,您可以檢查鼠標是否在清除按鈕上以及是否按下了鼠標左鍵,在這種情況下,您可以忽略對TextBox.Focus():的調用TextBox.Focus():

private void UserControl_GotFocus(object sender, RoutedEventArgs e)
{
     if ((this.clearButton.IsMouseOver && Mouse.LeftButton == MouseButtonState.Pressed) == false)
     {
         this.textBox.Focus();
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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