![](/img/trans.png)
[英]NumericUpDown ValueChanged event with immediate consequences?
[英]Custom NumericUpDown ValueChanged event in WPF
由於WPF不包含WinForms
已知的NumericUpDown
控件,因此我實現了自己的控件,並處理上限和下限值以及其他驗證。
現在, WinForms
NumericUpDown
舉行了一個ValueChanged
事件,它也很適合實現它。 我的問題是:如何將TextBox
的TextChangedEvent
提升到我的主應用程序? Delegate
? 或者還有其他任何首選方式來實現這一點嗎?
我個人更喜歡為此目的使用delegate
,因為我可以為它設置我自己的輸入參數。 我會做這樣的事情:
public delegate void ValueChanged(object oldValue, object newValue);
使用object
作為數據類型將允許您在NumericUpDown
控件中使用不同的數字類型,但是每次你必須將它NumericUpDown
轉換為正確的類型...我會發現這有點痛苦,所以如果你的控件只會使用一種類型,例如int
,然后你可以將你的delegate
更改為:
public delegate void ValueChanged(int oldValue, int newValue);
然后,您需要一個公共屬性,以便控件的用戶附加處理程序:
public ValueChanged OnValueChanged { get; set; }
像這樣使用:
NumericUpDown.OnValueChanged += NumericUpDown_OnValueChanged;
...
public void NumericUpDown_OnValueChanged(int oldValue, int newValue)
{
// Do something with the values here
}
當然,除非我們實際從控件內部調用委托,否則不要忘記在沒有附加處理程序的情況下檢查null
:
public int Value
{
get { return theValue; }
set
{
if (theValue != value)
{
int oldValue = theValue;
theValue = value;
if (OnValueChanged != null) OnValueChanged(oldValue, theValue);
NotifyPropertyChanged("Value"); // Notify property change
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.