在WP7的TextBox如果需要Click事件該怎麼做呢?
已經忘了在哪邊看到相關的文章了,不過還是筆記一下;在預設TextBox上面只會有MouseLeftButtonDown這個事件可以偵測使用者是否點選,而這個事件是一點選就馬上會觸發了,如果想要Click的效果,也就是按下、放開,這樣的動作才要觸發的話,就要而外的處理一下;這類的需求是比較少見一些,不過如果需要在TextBox上實作Click的動作的話可以參考下面的方式。
首先建立一個新的類別,在這個類別中會繼承原先的TextBox,並且加上一個自訂事件
首先建立一個新的類別,在這個類別中會繼承原先的TextBox,並且加上一個自訂事件
namespace MyCtl { public class nTextBlock : TextBox { bool isMouseDown = false; public delegate void deOnClick(object sender,MouseButtonEventArgs e); public event deOnClick OnClick; protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { isMouseDown = true; base.OnMouseLeftButtonDown(e); } protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { if (isMouseDown) { isMouseDown = false; OnClick(this,e); } else base.OnMouseLeftButtonUp(e); } } }而在主要頁面上可以用下面的方式將控制項加進來使用
MyCtl.nTextBlock nTxt = new MyCtl.nTextBlock(); Grid.SetRow(nTxt, 1); nTxt.Text = "New TextBox"; nTxt.OnClick += new MyCtl.nTextBlock.deOnClick(nTxt_OnClick); ContentGrid.Children.Add(nTxt);這邊其實就是自行宣告一個變數來判斷是不是完成Click的動作,不建立新的類別都寫在主要頁面中來處理相關的事件也是可以,不過程式碼就會變得比較不好閱讀一些;做個筆記也給大家參考看看了。
留言