IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Sauvegarde / restitution Police


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 78
    Points
    78
    Par défaut Sauvegarde / restitution Police
    Bonsoir tous le monde.

    Suite au développement d'une application, je permet à l'utilisateur de modifier la police, le style etc etc etc de la form.
    Ce que j'aimerai ensuite c'est pouvoir sauvegarder dans un fichier le choix de l'utilisateur et le re-appliquer à la nouvelle ouverture du logiciel.

    je sais que ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.label1.font = New Font("Microsoft Sans Serif", 12, Drawing.FontStyle.Bold Or FontStyle.Underline)
    Concernant la Police, et la taille c'est assez simple, mais concernant le style cela se complique car il peut y avoir une multitude de possibilité.
    Gras / Gras + italique / Gras + souligné / ... ... ...

    alors je chercher un moyen assez rapide de sauvegarder les informations et les restituer.

    J'ai trouvé que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Regular = 0
       Bold = 1
       Italic = 2
       Underline = 4
       StrikeThrough = 8
    donc lorsque je fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox(Me.FontDialog1.Font.Style)
    Si on me renvoit "7" c'est que l'utilisateur à choisie Gras + Italique + souligné.
    Je peux facilement sauvegarder dans un fichier le "7". Mais comment ensuite le restitué..... car la ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.label1.font = New Font("Microsoft Sans Serif", 12, 7)
    ça marche pas tiens dont

    du coup,, est-ce que je dois faire un module à coté qui comprends toutes les options disponibles tel que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    If result = "1" then
    toto =Drawing.FontStyle.regular
    elseif result = "2" then
    toto = Drawing.FontStyle.bolt
    elseif result ="3" then
    toto = Drawing.FontStyle.regular or Drawing.FontStyle.bolt
    ...
    ...
    ...  
    end if
     
    me.label1.font = New Font("Microsoft Sans Serif", 12, toto)
    Ou est-ce qu'il y a un moyen d'appliquer facilement ce chiffre (7 ou 3 ou 2 ...) assez rapidement et facilement.

    Je ne sais pas si j'ai été assez clair

    Merci.

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    La serialization est ton ami soit par le biais de My.Settings soit de BinaryFormatter....
    code .vb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    Imports System.Runtime.Serialization.Formatters.Binary
    Imports System.IO
     
    Public Class FormCustomFont2
        Private fnt As Font = New Font("arial", 12.0, FontStyle.Bold) 'default font    
        Private path As String = Directory.GetCurrentDirectory() + "\fnt.bin"
        'button change font
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If FontDialog1.ShowDialog() = DialogResult.OK Then
                fnt = FontDialog1.Font
            End If
            TextBox1.Font = fnt
        End Sub
        Private Sub FormCustomFont2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            fnt = DeSerializeFont(fnt)
     
            TextBox1.Text = "Bonsoir tous le monde." _
                & "Suite au développement d'une application, je permet à l'utilisateur de modifier la police, le style etc etc etc de la form." _
                & " Ce que j'aimerai ensuite c'est pouvoir sauvegarder dans un fichier le choix de l'utilisateur et le re-appliquer à la nouvelle ouverture du logiciel."
     
            TextBox1.Font = fnt
        End Sub
     
        Private Sub FormCustomFont2_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
            SerializeFont(fnt)
        End Sub
     
     
        Private Sub SerializeFont(ByVal thefont As Font)
     
            Dim fb As New BinaryFormatter
            Using ms As New FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)
                fb.Serialize(ms, thefont)
            End Using
     
        End Sub
     
        Private Function DeSerializeFont(ByVal thefont As Font) As Font
     
            If Not File.Exists(path) Then Return thefont 'return the default font
            Dim fb As New BinaryFormatter
            Using ms As New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)
                thefont = CType(fb.Deserialize(ms), Font)
            End Using
            Return thefont
        End Function
     
    End Class
    bon code....

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Points : 78
    Points
    78
    Par défaut
    D'accord je ne connaissais pas. J'ai regardé un peu comment cela marche. Il me faut le tester.

    En revanche, est-il possible d'enregistrer dans le même fichier ".bin" plusieurs sauvegarde afin que je puisse définir une police, taille, style différent entre mes controles de la form et ma barre d'outil.


  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour
    tu peux memoriser tous les Font de ton form dans un List(Of Font) pour le stockage ...
    Un List(Of Font) se seriliase de la meme maniere que le class Font..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
     
    Imports System.Runtime.Serialization.Formatters.Binary
    Imports System.IO
    Public Class FormCustomListFont
     
        Private MyFonts As New List(Of Font)
        Private path As String = Directory.GetCurrentDirectory() + "\lstfnt.bin"
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
     
            For Each ctl As Control In Me.Controls
                    MyFonts.Add(ctl.Font)
            Next
     
        End Sub   
         Private Sub FormCustomListFont_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            MyFonts = DeSerializeFont(MyFonts)
     
            For Each ctl As Control In Me.Controls
                Dim index As Integer = Me.Controls.IndexOf(ctl)
                ctl.Font = MyFonts(index)
            Next
        End Sub
     
        Private Function DeSerializeFont(ByVal lstFonts As List(Of Font)) As List(Of Font)
     
            If Not File.Exists(path) Then Return lstFonts 'fonts
            Dim fb As New BinaryFormatter
            Using ms As New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)
                lstFonts = CType(fb.Deserialize(ms), List(Of Font))
            End Using
            Return lstFonts
        End Function
     
        Private Sub FormCustomListFont_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
            SerializeFont(MyFonts)
        End Sub
        Private Sub SerializeFont(ByVal lstFonts As List(Of Font))
     
            Dim fb As New BinaryFormatter
            Using ms As New FileStream(path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)
                fb.Serialize(ms, lstFonts)
            End Using
     
        End Sub
     
     
     
     
     
     
     
     
     
     
     
    End Class
    bon code........

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/09/2014, 22h53
  2. Réponses: 1
    Dernier message: 04/06/2014, 18h30
  3. Sauvegarder le paramétrage d'une police
    Par gabest dans le forum C++/CLI
    Réponses: 0
    Dernier message: 28/02/2008, 20h19
  4. Adresse des polices de caractères dans la RAM video ?
    Par Anonymous dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 27/05/2002, 17h29
  5. [Kylix] Sauvegarde de donnée utilisateur....
    Par Eclypse dans le forum EDI
    Réponses: 1
    Dernier message: 11/05/2002, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo