Domanda

Ho lo stesso codice di interfaccia utente in esecuzione sulla mia macchina XP inglese e su XP macchina giapponese. Per qualche ragione - il comportamento è diverso tra queste due macchine:

Sulla macchina giapponese l'evento OnResize è sempre attivato durante la chiamata InitializeComponent (credo che da funzioni ResumeLayout). Sulla macchina inglese non è così.

Ho un metodo di sostituzione di OnResize che cambiano i valori delle mie variabili private che ho definito. Dal momento che il componente non è stato completamente caricato (il ctor è ancora in esecuzione), le variabili sono nulli e ottengo un'eccezione.

posso risolvere il codice verificando se la variabile è null o non, ma vorrei capire il motivo per cui è sempre chiamato, in primo luogo e perché succede solo su questa macchina.

Durante la mia ricerca in rete ho trovato lo stesso problema che qualcun altro ha scritto, ma senza la soluzione ( http://social.msdn.microsoft.com/Forums/en/winforms/thread/95aefae4-45d8-4ac5-a8f2-6e2142dfb631 ).

È stato utile?

Soluzione

La corretta divulgazione: che sto lavorando con Hila quindi ero in grado di vedere il codice. Il motivo per il diverso comportamento è dovuto alla una proprietà del controllo chiamata AutoScaleMode. Nella classe di base del controllo del valore della struttura è stata AutoScaleMode.Font. Dal momento che tutte le nostre macchine di R & S sono in esecuzione con le stesse impostazioni (in inglese) si sono comportati correttamente e il bug non è accaduto lì. Il passaggio ad una macchina giapponese significava diverse impostazioni dei caratteri da quelli sulle macchine inglesi. Ciò ha causato il problema. Così abbiamo cambiato il valore della proprietà AutoScaleMode su Nessuno e risolto il problema. Conclusione :. Guardatevi della proprietà AutoScaleMode

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