WPF中TextBox控件對於鼠標單擊獲取焦點后的全選


 1 void OnLostFocus(object sender, RoutedEventArgs e)
 2         {
 3             TextBox tb = e.Source as TextBox;
 4             tb.PreviewMouseDown += new MouseButtonEventHandler(OnPreviewMouseDown);
 5         }
 6 
 7         void OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
 8         {
 9             TextBox tb = e.Source as TextBox;
10             tb.Focus();
11             e.Handled = true;
12         }
13 
14         void OnGotFocus(object sender, RoutedEventArgs e)
15         {
16             TextBox tb = e.Source as TextBox;
17             tb.SelectAll();
18             tb.PreviewMouseDown -= new MouseButtonEventHandler(OnPreviewMouseDown);
19         }
<TextBox Name="searchTextBox" Background="DarkOrange" HorizontalAlignment="Stretch" MaxLength="15" TextAlignment ="Center" 
     TextChanged="OnSearchTextChange" GotFocus="OnGotFocus" PreviewMouseDown="OnPreviewMouseDown" LostFocus="OnLostFocus">
     輸入名稱搜索
</TextBox>

  關鍵點在於鼠標按下之時

tb.Focus();
e.Handled = true;

由這里引發GotFocus事件 並且設置Handled 標記阻止路由事件繼續傳播

在GotFocus的事件里面利用tb.SelectAll()全選

tb.PreviewMouseDown -= new MouseButtonEventHandler(OnPreviewMouseDown);

所實現的功能是當第二次單擊的時候,不再是全選文字,而是顯示光標。

 

第一次發博文,歡迎指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM