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:
MERCI D'AVANCE A TOUS !!!!!!!!
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>
A+++++
Partager