Ho creato un controllo NumericUpDown esadecimale per sotto-classing il NumericUpDown base e aggiungendo il seguente metodo:creazione di un controllo NumericUpDown esadecimale
protected override void UpdateEditText()
{
this.Text = "0x" + ((int) Value).ToString("X2");
}
Questo funziona abbastanza bene. Il controllo ora mostra i valori nel formato:
0x3F
che è esattamente quello che cercavo.
Ma una cosa mi preoccupa: ogni volta che il testo -property è assegnato, un System.FormatException viene generata. Questo non sembra influenzare la funzionalità del controllo, ma penso che sia brutto.
Questo è il top della stack:
MyAssembly.dll HexNumericUpDown.UpdateEditText() Linea 31 C# System.Windows.Forms.dll System.Windows.Forms.NumericUpDown.ValidateEditText!() Unknown System.Windows.Forms.dll! System.Windows.Forms.UpDownBase.Text.set (valore stringa) Unknown
Posso semplicemente ignorare questa eccezione? O c'è un modo pulito per sbarazzarsi di questo?
Avete forse qualcosa in esecuzione sull'evento TextChanged che tenta di convertire la stringa in un numero intero? – Jens
"ogni volta che viene assegnata la proprietà Text, viene lanciata una System.FormatException" ma dove? Pubblica lo stacktrace. –
Fatto. Ho aggiunto la traccia dello stack. – Boris