麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

TextBox獲取輸入焦點時自動全選的實現方法

2020-01-24 03:33:43
字體:
來源:轉載
供稿:網友

      C#開發WinForm,如何實現TextBox獲取輸入焦點時自動全選?   

      肯定不少朋友一看就會覺得再容易不過了:給TextBox添加GotFocus事件,然后在事件中調用TextBox.SelectAll()不就完事了嗎?巢皮一開始也理所當然得這么認為,但要是你試試這么做,你會發現的當你用點擊鼠標左鍵讓TextBox.獲得輸入焦點時,里面的文本根本不會全選。   

      這是why咧?原因是通過鼠標讓TextBox獲得輸入焦點時,TextBox觸發的事件順序是:MouseDown->GotFocus->MouseUp,也就是說TextBox在鼠標按下的那一刻已經獲得了輸入焦點,此時可以對文本全選。但郁悶的是,MouseUp卻會取消TextBox的文本選中狀態...也就是說文本其實曾經被全選了,但立即又被取消選中(-_-#)   

     這樣也好辦啊,那我改在MouseUp事件中TextBox.SelectAll()不就成了?這么一改,鼠標左鍵點擊TextBox還真的能實現全選,然而新的問題又會發現:當你希望再次左鍵點擊TextBox取消全選時,會發現TextBox仍然在全選。   

     根據上述描述,大致可以摸清這樣一個邏輯:   

     1、如果TextBox本身未獲得焦點,則點擊鼠標左鍵獲得焦點后,執行全選。   

     2、如果TextBox本身已經獲得焦點,則點擊鼠標左鍵則不再執行全選。
  

    根據上面的邏輯,其實只要在TextBox從無輸入焦點到獲得輸入焦點的時,針對鼠標左鍵點擊操作才做一次全選,否則不做全選操作,因此可以用一個變量作為TextBox從無輸入焦點到獲得輸入焦點的標記,當鼠標左鍵點擊判斷到這個標記存在時,執行一次全選操作,并把這個標記取消,這樣就可以實現上述邏輯了。   

     下面的代碼使用TextBox.Tag來作為獲得輸入焦點標記,實現上述自動全選邏輯引用內容      

復制代碼 代碼如下:

  public Form1()        
  {             
         InitializeComponent();
         textBox.Text = "Auto Select Text Demo";             
         textBox.Tag = false;             
         textBox.GotFocus += new EventHandler(textBox_GotFocus);             
         textBox.MouseUp += new MouseEventHandler(textBox_MouseUp);        

 }

  void textBox_MouseUp(object sender, MouseEventArgs e)        
 {            
         //如果鼠標左鍵操作并且標記存在,則執行全選            
       if (e.Button == MouseButtons.Left && (bool)textBox.Tag == true)           
         {                 
                 textBox.SelectAll();            
         }

        //取消全選標記             
      textBox.Tag = false;        
 }

 
 void textBox_GotFocus(object sender, EventArgs e)       
  {             
            textBox.Tag = true;    //設置標記             
         textBox.SelectAll();   //注意1        
 }

  值得提出的是,雖然MouseUp事件已經執行了全選,但代碼中的“注意1”位置,GotFocus事件中我們還是要再執行一次全選,原因是讓TextBox獲得焦點的方法,除了通過鼠標點擊,還可能通過Tab切換焦點實現的,此時就不會觸發MouseUp,但也因此不會有被MouseUp取消全選的問題,因此在GotFocus事件中還是有必要執行一次全選。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日本搞逼视频 | 三级xxxx| 成人18在线 | 在线免费日韩 | 久久国语对白 | 国产成人精品免费视频大全最热 | 艹男人的日日夜夜 | 午夜电影视频 | 精品国产1区2区3区 免费国产 | 国产伦久视频免费观看视频 | 欧美激情天堂 | 久久国产精品系列 | www.精品在线| 91精品国产乱码久久久久久久久 | 羞羞色在线观看 | 亚洲激情91 | 日本中文字幕电影在线观看 | 精品国产乱码久久久久久久 | 国产精品久久久久久久久久久久久久久 | 一区二区三区欧美在线观看 | 羞羞视频免费网站日本动漫 | 国产精品视频一区二区三区四 | 亚洲骚妻 | 亚洲第一页夜 | 深夜毛片免费看 | 国产精品热 | 久国产 | 欧美亚洲一级 | 久章草在线观看 | 国产成人精品一区二区仙踪林 | 欧美一级免费在线观看 | 高清视频91 | 又黄又爽又色无遮挡免费 | 国产精品久久久久久模特 | 中文字幕在线观看视频一区 | 黑人日比 | 亚洲成人综合网站 | 欧美一级片 在线播放 | 中文字幕在线网站 | 国产亚洲精品久久久久婷婷瑜伽 | 国产69精品久久久久99尤 |