Oppure

Loading
08/02/23 20:05
alip1
È 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.
aaa
09/02/23 8:15
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.

mire.forumfree.it/ - Mire Engine
C# UI Designer
09/02/23 10:42
alip1
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
aaa
09/02/23 11:05
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:

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture

learn.microsoft.com/en-us/dotnet/api/…

la disposizione degli elementi all'interno del controllo DTP si possono personalizzare:
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:
telerik.com/forums/…

Ultima modifica effettuata da Carlo 09/02/23 12:18
in programmazione tutto è permesso
09/02/23 16:42
alip1
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:

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture

learn.microsoft.com/en-us/dotnet/api/…

la disposizione degli elementi all'interno del controllo DTP si possono personalizzare:
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:
telerik.com/forums/…


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:
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:

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
aaa
09/02/23 19:49
Carlo
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:
codeproject.com/Articles/45684/…

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.

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 09/02/23 22:11
in programmazione tutto è permesso
10/02/23 6:22
alip1
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 learn.microsoft.com/… 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.:(
aaa
10/02/23 9:23
Carlo
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: pierotofy.it/pages/extras/forum/…
Ultima modifica effettuata da Carlo 10/02/23 9:49
in programmazione tutto è permesso