Domanda

ho semplice applicazione Windows Form (non WPF), e ho due controlli su di esso:

  1. TrackBar
  2. NumericUpDown

Voglio fare un po 'di legame tra di loro, quindi se uno di loro ha il suo cambio di valore, l'altro controllo verrà aggiornata per mostrare lo stesso valore.

È possibile? Se sì, come posso farlo?

Grazie.

È stato utile?

Soluzione

Certo, è possibile. Non so di un modo per rendere il collegamento tra i due controlli automatici, in modo da avere la scrittura del codice da soli. Ma non preoccupatevi, non è difficile.

devi prima di collegare un gestore all'evento che viene generato da ogni controllo quando il suo valore cambia. Logicamente, entrambi controlla questo evento la stessa cosa: ValueChanged. Poi, in ogni metodo del gestore dell'evento, è possibile impostare a livello di codice il valore dell'altro controllo per il nuovo valore del primo controllo. Ad esempio:

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;
}

Ovviamente per far funzionare correttamente, si sia bisogno di fare in modo che i controlli hanno lo stesso range (valori massimi e minimi), o aggiungere alcuni controlli di errore per il codice di cui sopra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top