Domanda

Per un progetto ho creato una colonna DataGridView personalizzata che contiene i controlli NumericUpDown. È implementato in modo simile al suggerimento di Microsoft

La colonna funziona bene in Windows XP. Accetta le cifre immesse e il separatore decimale. In Windows Vista ho lo strano problema che il controllo accetta solo il separatore decimale inserito dal tastierino numerico ma non dal blocco principale della tastiera.

Devo aggiungere che lavoro con le impostazioni di cultura tedesca (Svizzera) in Windows Vista e il layout della tastiera tedesca (Svizzera) è attivato. Il separatore decimale in Svizzera è.

Qualcuno ha un'idea del motivo e forse una soluzione? Grazie mille!

Michael

Modifica Ho trovato la soluzione al mio problema.

  1. Per chiarire un po 'di più la situazione. Il controllo NumericUpDown che uso implementa IDataGridViewEditingControl ed eredita da NumericUpDown. A causa di IDataGridViewEditingControl ho implementato il metodo EditingControlWantsInputKey. E nell'implementazione di questo metodo ho trovato il mio errore o cosa è andato storto.

  2. Nel metodo ho ispezionato le chiavi immesse e ho deciso se il controllo doveva gestirlo. Ma per il separatore decimale mi aspettavo solo Keys.Decimal . Nel mio caso speciale (sbagliato) la chiave non può essere abbinata. Ciò che mancava era cercare anche Keys.OemPeriod . E quella era la soluzione.

È stato utile?

Soluzione

Puoi incollare il tuo codice OnKeyDown e / o OnKeyPress? Almeno il codice di filtraggio chiave pertinente. Sarà più facile individuare eventuali problemi.

A proposito, normalmente uso sia una tastiera inglese britannica che una brasiliana portoghese, quindi ho avuto la mia parte di questi problemi. Quel tipo ti costringe a diventare un esperto di localizzazione :)

Modifica : Oh, scusa, hai appena riletto e capito che stai usando il controllo di NumericUpDown. Puoi indicarmi il codice della colonna in modo che io possa provarlo qui? Probabilmente le impostazioni internazionali non vengono impostate per il controllo e dovrai farlo manualmente ad un certo punto.

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