私はシンプルなWindowsのアプリケーション(ないWPF)を形成する必要があり、私はそれに2つのコントロールがあります:私はいくつかのそれらの間の結合を作りたい WinFormsのNumericUpDownおよびTrackBarコントロールの値を同期するにはどうすればよいですか?
- トラックバーの1もしそうであれば彼らはその値の変更を持って、他のコントロールは同じ値を表示するように更新されます。
これは可能ですか?もしそうなら、どうしたらいいですか?
ありがとうございました。
私はシンプルなWindowsのアプリケーション(ないWPF)を形成する必要があり、私はそれに2つのコントロールがあります:私はいくつかのそれらの間の結合を作りたい WinFormsのNumericUpDownおよびTrackBarコントロールの値を同期するにはどうすればよいですか?
これは可能ですか?もしそうなら、どうしたらいいですか?
ありがとうございました。
もちろん、可能です。私は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;
}
はもちろん、あなたのいずれかのコントロールが同じ範囲(最大値と最小値)を持っていることを確認して、または上記のコードにいくつかのエラーチェックを追加する必要があります。
無限の呼び出しにはなりませんか? – 26071986
@ 26071986:いいえ、そうはなりません。それを試してみてください。 ;-) –
@ 26071986としてイベント呼び出しの無限ループを呼び出す – whiteshooz