Applicare il font automaticamente

domenica 10 settembre 2006 - 21.24

hydra Profilo | Junior Member

Salve a tutti.

Sto progettando una piccola applicazione per un mio amico e, visto che è un progetto casalingo e non ho particolari scadenze, sto tentando di fare in modo che la mia applicazione sia il più personalizzabile possibile (contando che poi quest'applicazione non deve fare 'sto gran che).
Una cosa che volevo sapere è se si può in qualche modo impostare il tipo di font automaticamente a tutti i controlli di una finestra o, meglio ancora, a tutta l'applicazione. In pratica non vorrei scrivere codice per impostare il font, anche contando che vorrei che quando io applico le nuove impostazioni esse venissero già applicate alle finestre senza dover riavviare il programma.

Come linguaggio uso VB.NET su VS2005 e le varie impostazioni le andrei a prendere dal my.settings.

mirio Profilo | Newbie

Potresti fare una cosa banale come questa:

File sharedHelpers.vb

Public Class Helpers Public Shared Sub ChangeFontsControls(ByVal Cts As ControlCollection) For Each c As Control In Cts c.Font = My.MySettings.Default.FontApp Next End Sub End Class

FontApp e' la propietà impostata nella config.

' Nel Form load
SharedHelpers.ChangeFontsControls(Me.Controls)

Poi puoi costruirti un intefaccia per settare il file config sfuttando la classe MySettings.

Vedi codice:

Dim fontDialog As New FontDialog Dim mSet As My.MySettings = My.MySettings.Default() fontDialog.Font = mSet.FontApp fontDialog.ShowDialog() mSet.FontApp = fontDialog.Font mSet.Save() ' chiama la il metodo shared nella classe File SharedHelpers.vb SharedHelpers.ChangeFontsControls(Me.Controls)


Ciao.


hydra Profilo | Junior Member

Grazie per la risposta.
Avevo già provato con For Each ma non utilizzavo i parametri corretti quindi non ottenevo il risultato voluto. Effettivamente come mi hai suggerito funziona, solo che non ho capito una cosa: dove trovo il file sharedHelpers.vb e perchè lo dovrei inserire proprio li? Non basta che lo metto come sub nel form principale?

mirio Profilo | Newbie

Certo che basta che lo metti nella sub.
Era solo un esempio il file Shared....... e sono un nome a caso che ho usato io.
Mettendolo in un file separato dove ragruppare i metodi shared e' comodo tutto qua.
Lo puoi chiamare da tutta la soluzione.
Se usi form mdi puoi metterla non shared, e' solo una comodità per non definirla per ogni form.
ciao.

hydra Profilo | Junior Member

Ah ok, pensavo che quello che avevi messo tu fosse un file "di sistema"
Grazie per la risposta.

hydra Profilo | Junior Member

Riprendo questo vecchio topic perchè ora ho un altro tipo di problema simile, ma leggermente più complicato.

Per semplicità devo crearmi una funzione che, a seconda di alcuni parametri, mi assegni il colore di sfondo a dei checkbox (impostati come pulsanti). Siccome questi checkbox (che servono per selezionare dei punti) sono circa un centinaio, volevo farmi una funzione con un ciclo che automaticamente mi resetti il colore.
Pensavo di fare un ciclo su tutti i controlli del form, il problema è che non sono riuscito a trovare una proprità per sapere se il controllo è un textbox, un panel, un groubox e tutto il resto. Mi sapete aiutare?

mirio Profilo | Newbie

Public Shared Sub ChangeFontsControls(ByVal Cts As ControlCollection) For Each c As Control In Cts If TypeOf (c) Is CheckBox Then c.Font = My.MySettings.Default.FontApp End If Next End Sub
If TypeOf (c) Is CheckBox Then

Mirio Salvini.
http://www.smdev.eu
info@smdev.eu

hydra Profilo | Junior Member

Grazie, funziona. Avevo temporaneamente risolto con una soluzione tipo

If control.ToString.ToUpper.Contains("CHECKBOX") Then ...

Ma è decisamente meno elegante.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5