簡體   English   中英

手動更改值時,為什么在NumericUpDown控件上未觸發ValueChanged事件?

[英]Why is the ValueChanged event not triggered on a NumericUpDown Control When the Value is Changed Manually?

我將代碼附加到兩個NumericUpDown控件的ValueChanged事件:

private void numericUpDownHeight_ValueChanged(object sender, EventArgs e)
{
    if (checkBoxRetainRatio.Checked)
    {
        numericUpDownWidth.Value = numericUpDownHeight.Value;
    }
}

private void numericUpDownWidth_ValueChanged(object sender, EventArgs e)
{
    if (checkBoxRetainRatio.Checked)
    {
        numericUpDownHeight.Value = numericUpDownWidth.Value;
    }
}

當我使用控件的向上/向下箭頭更改編輯框中的值時,此方法非常有用。 但是,如果我手動編輯該值(例如,當我想將其從100更改為25,並且可以通過手動六次擊鍵來完成,而增加5,則使用向下箭頭需要15),則該事件不會觸發。

有沒有一種快速的方法來解決這種輕微的刺激(IOW,如果要完成它確實有些不可思議和棘手的事情,我就不會打擾)。

對於發生ValueChanged事件,可以通過單擊向上或向下按鈕,或通過用戶輸入控件讀取的新值來在代碼中更改Value屬性。 當用戶按下ENTER鍵或離開控件時,將讀取新值。 如果用戶輸入一個新值,然后單擊向上或向下按鈕,則ValueChanged事件將發生兩次。

來源: https : //msdn.microsoft.com/zh-cn/library/system.windows.forms.numericupdown.valuechanged%28v=vs.110%29.aspx

我將使用sender.Value,其中包含最新的值。 您必須將其強制轉換為發件人的類型。

對於numericUpDown組件:

((System.Windows.Forms.NumericUpDown)(sender)).Value.ToString()

暫無
暫無

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

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