1

NumericUpDown コントロールの値がmouseUp イベントによって変更されたかどうかを判断する必要があります。

numericupdown の値が変更されたときに、高価な関数を呼び出す必要があります。「ValueChanged」だけを使用することはできません。MouseUp および KeyUp イベントを使用する必要があります。

ここに画像の説明を入力

基本的に、私は知る必要があります:

ユーザーがマウスを離したときに、numericUpDown の値は変化しましたか? 赤で強調表示されていない領域をクリックすると、答えはノーです。赤い領域以外のどこかをクリックすると、マウスアップイベントを無視する必要があります。

これをコードで判断するにはどうすればよいですか? イベントは少しわかりにくいと思います。

4

3 に答える 3

2

これは、ユーザーがマウス ボタンを離したときに発生します。どのマウスボタンが離されたかを調べたいと思うかもしれません。

編集

    decimal numvalue = 0;
    private void numericUpDown1_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left && numvalue != numericUpDown1.Value)
        {
            //expensive routines
            MessageBox.Show(numericUpDown1.Value.ToString());
        }

        numvalue = numericUpDown1.Value;
    }

EDIT 2 これは、マウスの左ボタンがまだ押されているかどうかを判断します。高価なルーチンを実行する前に終了した場合、キーボードのボタンを押しても役に立ちません。

    private void numericUpDown1_ValueChanged(object sender, EventArgs e)
    {
        if ((Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left)
        {
            return;
        }
        //expensive routines


    }

編集 3

現在押されているキーを検出する方法は?

任意のキーダウンを解決するのに役立ちますが、重要なのは矢印キーだけだと思います

于 2012-06-11T13:24:34.813 に答える
1

LeaveコントロールのフォーカスがNumericUpDownなくなったときに呼び出されるイベントを使用する必要があると思います。

    int x = 0;
    private void numericUpDown1_Leave(object sender, EventArgs e)
    {
        x++;
        label1.Text = x.ToString();
    }
于 2012-06-11T13:29:23.120 に答える