問題 - 我需要忽略鼠標向上事件,點擊任何地方,但紅色區域時。
派生自定義數字控件,如下所示。獲取數字控件的TextArea並忽略KeyUp。
private void numericUpDown1_MouseUp(object sender, MouseEventArgs e)
{
MessageBox.Show("From Up/Down");
}
來自簡稱 - - https://stackoverflow.com/a/4059473/763026 &處理MouseUp事件:
class UpDownLabel : NumericUpDown
{
private Label mLabel;
private TextBox mBox;
public UpDownLabel()
{
mBox = this.Controls[1] as TextBox;
mBox.Enabled = false;
mLabel = new Label();
mLabel.Location = mBox.Location;
mLabel.Size = mBox.Size;
this.Controls.Add(mLabel);
mLabel.BringToFront();
mLabel.MouseUp += new MouseEventHandler(mLabel_MouseUp);
}
// ignore the KeyUp event in the textarea
void mLabel_MouseUp(object sender, MouseEventArgs e)
{
return;
}
protected override void UpdateEditText()
{
base.UpdateEditText();
if (mLabel != null) mLabel.Text = mBox.Text;
}
}
在MainForm中,該控制即UpDownLabel
更新你的設計師。
現在,使用此控件而不是標準的控件並掛鉤 KeyUp事件。當您單擊 微調[向上/向下按鈕,這又是一個不同的控制衍生 從UpDownBase]你將永遠得到向上/向下按鈕KeyUp事件僅即紅色區域。
「我不能只用‘的ValueChanged’,我需要使用的MouseUp和KeyUp事件。」 - 爲什麼? –
「如果點擊任何未用紅色突出顯示的區域,答案是否定的」什麼?你可能想重新陳述你的問題,因爲我們不知道你的程序做了什麼或者應該做什麼。紅色適合在哪裏?你通常如何讓你的numericupdown變化? –
@TomW我說,我需要調用一個昂貴的3D渲染功能,這需要大量的時間。如果我每次調用它的值都會改變,它會導致UI非常滯後。我已經使用了與的ValueChanged一個計時器,試圖解決這個問題,但是當用戶放開鼠標,我只是希望它再次渲染,即刻。 – David