Bonsoir à tous,

Après maintenant 2 mois de bloquage sur mon problême, et après avoir dientifié le vrai problême, je repose un message en vous expliquant clairement ce qu'il se passe. J'ai trouvé le problême, mais je n'ai toujours pas de solution depuis maintenant 2 semaines.

Voila le problême, j'ai un fichier xml que j'utilise pour créer une form avec ces contrôle et tout. j'ai 2 Name, Object et Property. Object définit un contrôle, et tout les property qui sont dedans sont les propriété du contrôle.

Je vous décrie ce que fais mon code pour que vous comprenniez le problême après:
Quand il lit le type d'un object, il donne une valeur à une variable qui dit si c'est une form, un bouton ou autre. Quand il y a un property, il donne la valeur du property au contrôle qui est en cour, et on le sais grace à la variable dont je parle juste au dessus.

Le problême, c'est qu'il arrive que j'ai un Object, qui se trouve dans un autre Object. Le code vois un nouveau object, donc il idéntifie le type du contrôle. Mais c'est pas ce qu'il faut, car après, il ne peu plus s'occuper des Property du contrôle précédent.

Bon, je ne suis pas sur que je vous ai bien expliqué, mais ça vous éclaircira surment si je vous donne mon code vb.net et celui en xml:

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
Public Sub CONVERT(ByVal FileName As String)
        Dim ctrl As New Control ' variable pour la création d'un contrôle
        Dim forms As New Form 'variable pour la création de la form
        Dim type_ctrl As Integer = 0 ' 1 = Form et 2 = Contrôle
        Dim xr As XmlTextReader = New XmlTextReader(FileName)
 
        Do While xr.Read()
            Select Case xr.NodeType
                Case XmlNodeType.Element
                    Select Case xr.Name
                        Case "Object" ' Ici, on va identifier le type d'objet, un form, un boutton...ect
                            Select Case xr.GetAttribute("type")
                                Case "System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ' Si cest une form
                                    type_ctrl = 1 '1, c'est une form
                                    forms = New Form
                                    forms.Show()
                                Case "System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ' Si c'est un bouton
                                    type_ctrl = 2 '2, c'est un contrôle
                                    ctrl = New Button
                                    forms.Controls.Add(ctrl)
                            End Select
                        Case "Property"
                            Select Case xr.GetAttribute("name")
                                Case "Text" 'Pour la propriété Text du contrôle ou de la Form
                                    If type_ctrl = 1 Then 'Si c'est une form
                                        forms.Text = xr.ReadString
                                    End If
                                    If type_ctrl = 2 Then 'Si c'est un contrôle
                                        ctrl.Text = xr.ReadString
                                    End If
                            End Select
                    End Select
                Case XmlNodeType.Element
                    Select Case xr.Name
                        Case "Object"
                            type_ctrl = 0
                    End Select
            End Select
        Loop
 
    End Sub



Et voici celui en XML:

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
 
  <Object type="System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="Dialog" children="Controls">
    <Object type="System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="Cancel_Button" children="Controls">
      <Property name="TabIndex">1</Property>
      <Property name="Size">75, 23</Property>
      <Property name="Name">Cancel_Button</Property>
      <Property name="UseVisualStyleBackColor">True</Property>
      <Property name="Text">Annuler</Property>
      <Property name="Location">313, 250</Property>
      <Property name="DataBindings">
        <Property name="DefaultDataSourceUpdateMode">OnValidation</Property>
      </Property>
      <Property name="DialogResult">Cancel</Property>
    </Object>
    <Object type="System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="OK_Button" children="Controls">
   <Property name="TabIndex">0</Property>
      <Property name="Size">75, 23</Property>
      <Property name="Name">OK_Button</Property>
      <Property name="UseVisualStyleBackColor">True</Property>
      <Property name="Text">OK</Property>
      <Property name="Location">232, 250</Property>
      <Property name="DataBindings">
        <Property name="DefaultDataSourceUpdateMode">OnValidation</Property>
      </Property>
    </Object>
    <Property name="ShowIcon">False</Property>
    <Property name="MaximizeBox">False</Property>
    <Property name="Text">Boite de dialogue</Property>
    <Property name="ShowInTaskbar">False</Property>
    <Property name="Name">Dialog</Property>
    <Property name="StartPosition">CenterScreen</Property>
    <Property name="DataBindings">
      <Property name="DefaultDataSourceUpdateMode">OnValidation</Property>
    </Property>
    <Property name="MinimizeBox">False</Property>
    <Property name="ClientSize">400, 285</Property>
    <Property name="FormBorderStyle">FixedDialog</Property>
  </Object>
MERCI D'AVANCE A TOUS !!!!!!!!

A+++++