
alip1 (Normal User)
Pro
    
Messaggi: 108
Iscritto: 12/08/2019
|
È possibile cambiare il linguaggio di un controllo caledario? Cioè se il sistema è impostato per dire en-US come cultura ed per utilizzare l'applicazione in italiano cambio per tread dell'applicazione cultureinfo in it-IT (italiano) .. le date prendono il formato italiano tutto corretto rimane il problema per gli oggetti calendari che non si attengono alla nuova culture impostata ma mantengono quella del sistema in inglese. Spero di essermi spiegato. Ho cercato in giro, in microsoft dell'oggetto mi dice che ha la proprieta language ma è sfruttabile solo in Asp con js e non anche in c# o vb.net. Sapete come aggirare il problema? Grazie per ogni utile aiuto.
|
|

Thejuster (Admin)
Guru^2
    
Messaggi: 2218
Iscritto: 04/05/2008
|
Che io sappia,
in Net non esiste nessun controllo di tipo calendario.
Se hai preso un controllo dal web chiedi direttamente a chi lo ha scritto.
Altrimenti cerca le proprietà del controllo se ci sono metodi virtuali così da poter fare un override sul Paint esempio e modificare parzialmente il disegno.
|
|

alip1 (Normal User)
Pro
    
Messaggi: 108
Iscritto: 12/08/2019
|
Postato originariamente da Thejuster:
Che io sappia,
in Net non esiste nessun controllo di tipo calendario.
Se hai preso un controllo dal web chiedi direttamente a chi lo ha scritto.
Altrimenti cerca le proprietà del controllo se ci sono metodi virtuali così da poter fare un override sul Paint esempio e modificare parzialmente il disegno.
|
Intendevo il controllo DateTimePicker disponibile in VB.NET |
|

Carlo (Member)
Guru
    
Messaggi: 1134
Iscritto: 29/01/2018
|
Per: DateTimePicker (DTP)
La lingua del DTP è legata all'impostazione "Pese e lingua" del S.O.
Se si vuole una lingua diversa nel DTP da quella impostata nel S.O. bisogna cambiare la culture del thread in uso:
Codice sorgente - presumibilmente Plain Text |
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture
|
https://learn.microsoft.com/en-us/dotnet/api/system.globali ...
la disposizione degli elementi all'interno del controllo DTP si possono personalizzare:
Codice sorgente - presumibilmente Plain Text |
DateTimePicker1.Format = DateTimePickerFormat.Custom
DateTimePicker1.CustomFormat = "dddd yyyy MMMM dd"
|
d = giorno
dd = giorno con lo zero avanti
ddd = giorno della settimana con tre lettere
dddd = giorno della settimana in testo
M = mese
MM = mese con lo zero avanti
MMM = mese a tre lettere
MMMM = mese in testo
yyyy = anno
In alcuni S.O. l'impostazione culture del singolo thread sul DTP viene ignorata.
Ho letto che il radDateTimePicker può usare una lingua diversa da quella del S.O, ma non l'ho mai usato.
Quinta risposta:
https://www.telerik.com/forums/raddatetimepicker-custom-format
Ultima modifica effettuata da Carlo il 09/02/2023 alle 13:18
in programmazione tutto è permesso |
|

alip1 (Normal User)
Pro
    
Messaggi: 108
Iscritto: 12/08/2019
|
Postato originariamente da Carlo:
Per: DateTimePicker (DTP)
La lingua del DTP è legata all'impostazione "Pese e lingua" del S.O.
Se si vuole una lingua diversa nel DTP da quella impostata nel S.O. bisogna cambiare la culture del thread in uso:
Codice sorgente - presumibilmente Plain Text |
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture
|
https://learn.microsoft.com/en-us/dotnet/api/system.globali ...
la disposizione degli elementi all'interno del controllo DTP si possono personalizzare:
Codice sorgente - presumibilmente Plain Text |
DateTimePicker1.Format = DateTimePickerFormat.Custom
DateTimePicker1.CustomFormat = "dddd yyyy MMMM dd"
|
d = giorno
dd = giorno con lo zero avanti
ddd = giorno della settimana con tre lettere
dddd = giorno della settimana in testo
M = mese
MM = mese con lo zero avanti
MMM = mese a tre lettere
MMMM = mese in testo
yyyy = anno
In alcuni S.O. l'impostazione culture del singolo thread sul DTP viene ignorata.
Ho letto che il radDateTimePicker può usare una lingua diversa da quella del S.O, ma non l'ho mai usato.
Quinta risposta:
https://www.telerik.com/forums/raddatetimepicker-custom-format
|
Grazie Carlo
ma non intendevo il formato della data. So che si può customizzare a come la si vuole. Il problema mio è di altro tipo:
Il sistema su cui gira l'applicazione è in in Inglese
nel main dell'applicazione come tu giustamente hai fatto notare imposto la culture del tread in italiano:
Codice sorgente - presumibilmente Plain Text |
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("it-IT")
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture
|
nel form contenente il DateTimePicker imposto:
Codice sorgente - presumibilmente Plain Text |
DateTimePicker1.Format = DateTimePickerFormat.Custom
DateTimePicker1.CustomFormat = "dd/mm/yyyy"
|
Ok.
Ora avvio l'applicazione, apro il form e clicco sul DateTimePicker e trovo il formato corretto ma le scritte (mese, oggi) in Inglese.
Chiedevo quindi se è possibile cambiare anche queste diciture del DateTimePicker in italiano..
Grazie per l'attenzione |
|

Carlo (Member)
Guru
    
Messaggi: 1134
Iscritto: 29/01/2018
|
Postato originariamente da alip1:
Ora avvio l'applicazione, apro il form e clicco sul DateTimePicker e trovo il formato corretto ma le scritte (mese, oggi) in Inglese.
Chiedevo quindi se è possibile cambiare anche queste diciture del DateTimePicker in italiano..
Grazie per l'attenzione |
Non credo, sembra che DTP scriva i giorni e i mesi con la lingua del S.O.
Per questo ti ho postato il link della Telerik.
Se vuoi qui, un custom control datetimepiker riscritto completamente che supporta la lingua:
https://www.codeproject.com/Articles/45684/Culture-Aware-Mo ...
Mi viene anche in mente che visto che nel dateTimePicker puoi formattatre la data visualizzata aggiungendo anche dei testi, potresti usando l'indice di una lista contenente i mesi in italiano ed un'altra i giorni della settimana sempre in italiano, ricomporla come ti aggrada.
messo in in pratica.
Codice sorgente - presumibilmente VB.NET |
Dim listMonth As New List(Of String)({"", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}) Dim listDayWeek As New List(Of String)({"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}) Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged DateTimePicker1.Format = DateTimePickerFormat.Custom DateTimePicker1.CustomFormat = "'" & listDayWeek(DateTimePicker1.Value.DayOfWeek) & "' yyyy '" & listMonth(DateTimePicker1.Value.Month) & "' dd" End Sub
|
Ho fatto il contrario, il mio S.O. è in italiano e così scrive all'americana.
Il linguaggio sul calendario resta quello del S.O., purtroppo.
PS. le istruzioni:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("it-IT")
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture
Funzionano nel senso che se estrai la data dal controllo con:
Dim data As String = DateTimePicker1.Value.ToLongDateString()
vedrai che la stringa restituita in data è della lingua impostata sulla cultura del thread. Ultima modifica effettuata da Carlo il 09/02/2023 alle 23:11
in programmazione tutto è permesso |
|

alip1 (Normal User)
Pro
    
Messaggi: 108
Iscritto: 12/08/2019
|
Grazie Carlo.
Purtroppo il linguaggio sul calendario, come dicevo, resta quello del S.O.; ed è quello che avrei voluto cambiare.
Non capisco perchè non è stata resa disponibile una proprietà del controllo tipo language che consentirebbe di cambiare anche la lingua.
Sbirciando su https://learn.microsoft.com/it sembra possibile per il controllo solo in Asp (js), ma forse in quel contesto il controllo ha lo stesso nome ma forse è diverso. Non saprei proprio.
Comunque grazie di nuovo.
|
|

Carlo (Member)
Guru
    
Messaggi: 1134
Iscritto: 29/01/2018
|
La Microsoft il DTP per .Net Framework, lo ha fatto cosi. Nei nuovi framework ha corretto il tiro e il DTP ora supporta la lingua in modo indipendente da quella impostata nel S.O.
Si potrebbe intercettare il disegno del calendario e cambiare al volo i testi, ma a mio avviso è più facile e sicuro scriversi un userControl che disegna un calendario con la lingua desiderata.
Ho corretto ed ampliato un codice VB .Net (allegato) proposto da Maury, un utente di PieroTofy, usare il concetto di base cambiando la grafica come ti aggrada è semplice, si potrebbe far diventare uguale uguale al DTP.
La discussione con A.Maury qui: http://www.pierotofy.it/pages/extras/forum/viewtopic.php?f ...
Ultima modifica effettuata da Carlo il 10/02/2023 alle 10:49
in programmazione tutto è permesso |
|

alip1 (Normal User)
Pro
    
Messaggi: 108
Iscritto: 12/08/2019
|
Grazie Marco
|
|