Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Dtpeacker
Forum - C# / VB.NET - Dtpeacker

Avatar
alip1 (Normal User)
Pro


Messaggi: 143
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 21:05
Mercoledì, 08/02/2023
È 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.

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2331
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:15
Giovedì, 09/02/2023
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.



https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 143
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 11:42
Giovedì, 09/02/2023
Testo quotato

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

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1388
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 12:05
Giovedì, 09/02/2023
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

  1. System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
  2. 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

  1. DateTimePicker1.Format = DateTimePickerFormat.Custom
  2. 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
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 143
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 17:42
Giovedì, 09/02/2023
Testo quotato

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

  1. System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
  2. 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

  1. DateTimePicker1.Format = DateTimePickerFormat.Custom
  2. 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

  1. System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("it-IT")
  2. System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture



nel form contenente il DateTimePicker imposto:

Codice sorgente - presumibilmente Plain Text

  1. DateTimePicker1.Format = DateTimePickerFormat.Custom
  2. 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

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1388
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 20:49
Giovedì, 09/02/2023
Testo quotato

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

  1. Dim listMonth As New List(Of String)({"", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"})
  2. Dim listDayWeek As New List(Of String)({"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"})
  3.  
  4. Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
  5.      DateTimePicker1.Format = DateTimePickerFormat.Custom
  6.      DateTimePicker1.CustomFormat = "'" & listDayWeek(DateTimePicker1.Value.DayOfWeek) & "'  yyyy  '" & listMonth(DateTimePicker1.Value.Month) & "'  dd"
  7. 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
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 143
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 7:22
Venerdì, 10/02/2023
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.:(

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1388
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 10:23
Venerdì, 10/02/2023
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 ...


Carlo ha allegato un file: Calendario_Maury.zip (25967 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Carlo il 10/02/2023 alle 10:49


in programmazione tutto è permesso
PM Quote
Avatar
alip1 (Normal User)
Pro


Messaggi: 143
Iscritto: 12/08/2019

Segnala al moderatore
Postato alle 17:14
Venerdì, 10/02/2023
Grazie Marco

PM Quote