2011-01-12 13 views
3

私はシンプルなWindowsのアプリケーション(ないWPF)を形成する必要があり、私はそれに2つのコントロールがあります:私はいくつかのそれらの間の結合を作りたい WinFormsのNumericUpDownおよびTrackBarコントロールの値を同期するにはどうすればよいですか?

  • NumericUpDownを
    1. トラックバーの1もしそうであれば彼らはその値の変更を持って、他のコントロールは同じ値を表示するように更新されます。

      これは可能ですか?もしそうなら、どうしたらいいですか?

      ありがとうございました。

    答えて

    8

    もちろん、可能です。私は2つのコントロール間の接続を自動的に行う方法は知らないので、コードを自分で記述してください。しかし、心配しないで、それは難しいことではありません。

    まず、値が変更されたときに各コントロールで発生するイベントにハンドラをアタッチする必要があります。論理的には、両方ともこのイベントを同じことを制御します:ValueChanged。その後、各イベントハンドラメソッドで、他のコントロールの値をプログラムによって新しいコントロールの値に設定できます。たとえば:これが正しく動作するために

    void myNumericUpDown_ValueChanged(object sender, EventArgs e) 
    { 
        // Sync up the trackbar with the value just entered in the spinbox 
        myTrackBar.Value = Convert.ToInt32(myNumericUpDown.Value); 
    } 
    
    void myTrackBar_ValueChanged(object sender, EventArgs e) 
    { 
        // Sync up the spinbox with the value just set on the trackbar 
        myNumericUpDown.Value = myTrackBar.Value; 
    } 
    

    はもちろん、あなたのいずれかのコントロールが同じ範囲(最大値と最小値)を持っていることを確認して、または上記のコードにいくつかのエラーチェックを追加する必要があります。

    +1

    無限の呼び出しにはなりませんか? – 26071986

    +0

    @ 26071986:いいえ、そうはなりません。それを試してみてください。 ;-) –

    +0

    @ 26071986としてイベント呼び出しの無限ループを呼び出す – whiteshooz

    関連する問題