3

ボタンは、クリックした後にのみ無効になります。NumericUpDown コントロールの値が特定のポイントを超えてインクリメントされるとすぐに、対話なしで無効にしたいと考えています。ゴーグルしましたが、答えが見つかりませんでした。これが私のコードです:

    private void mybtn_Click(object sender, EventArgs e)
    {            
        if (numericud.Value > myArray[r, c] || myArray[r, c] == 0)
            DisableButton(mybtn);            
        myArray[r, c] = CalcNewMax(myArray[r, c]);
        OpenNewForm();
    }

    private void DisableButton(Button selectedbtn)
    {
        selectedbtn.Enabled = false;
    }

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

3

特定の例で機能するコードを次に示します。

あなたのコードに特に問題は見当たりません。私があなたなら、いくつかのブレークポイントを設定して、あなたの条件が満たされ、すべてがあなたの考えどおりに進んでいることを確認します。

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            if (numericUpDown1.Value > 5)
                button1.Enabled = false;
        }
    }
}

numericUpDown1_ValueChanged追加のメモとして、デザイナーで UpDown コントロールをダブルクリックすると、Visual Studio はハンドラーを自動的に生成します。

于 2012-11-07T19:48:20.450 に答える
1

数値の上下の値が変化したときではなく、ボタンがクリックされたときに「mybtn_Click()」メソッドを呼び出していると思います。ボタンのプロパティの「イベント」部分で、「MouseClick」イベントが「mybtn_Click()」を呼び出すように設定されているかどうかを確認します。

その後、数値アップダウンのプロパティの「イベント」部分に移動し、「mybtn_Click()」を呼び出すように「ValueChanged」イベントを設定します。その前に、メソッドの名前をより適切なものに変更することもお勧めします。

最後に、単にボタンの Enabled 値を変更するためのまったく新しいメソッドを作成する必要はありません。単純に行を置き換えます。

DisableButton(mybtn);

mybtn.Enabled = false;
于 2012-11-07T20:07:51.440 に答える