Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déclarer une feuille de style

1 réponse
Avatar
Gloops
Bonjour tout le monde,

Je suis en train de cr=E9er une application WinForm pour g=E9n=E9rer une =
page=20
web aspx (enfin ... une =E0 la fois). Chaque enregistrement sera renseign=
=E9=20
par des listes d=E9roulantes pour indiquer le type de contenant (par=20
exemple paragraphe, ou cellule de tableau), le type de contr=F4le (par=20
exemple asp:Label), le style affect=E9 =E0 chacun des deux, le texte dans=
la=20
langue d'origine, et le texte traduit dans une autre langue, le tout=20
enregistr=E9 dans une table SQL Server. Le chemin du fichier a =E9t=E9 pr=
=E9cis=E9=20
dans un pr=E9c=E9dent formulaire, qui a aussi permis de s=E9lectionner la=
=20
feuille de style et la page ma=EEtresse.

Le but est de faciliter la saisie du texte, plut=F4t que d'aller fouiller=
=20
dans l'interface des ressources de VS 2005, qui =E0 mon sens a ... le=20
m=E9rite d'exister.

Une fois que tout =E7a est pr=EAt un bouton permet de g=E9n=E9rer la page=
aspx=20
et les deux fichiers de ressource.

Il faut donc commencer par charger la liste des styles dans les listes=20
d=E9roulantes correspondantes. Lorsque je regarde dans l'aide, je vois qu=
e=20
l'objet StyleSheet est d=E9fini dans l'objet Document, et j'en d=E9duis=20
qu'il me faudra donc cr=E9er sur le winform un contr=F4le webbrowser (non=
=20
visible) o=F9 je charge un document temporaire ayant juste pour objet de =

faire le lien avec la feuille de style.

Alors voil=E0, l'objet de la question est juste de savoir si quelqu'un=20
voit une m=E9thode plus optimis=E9e, c'est-=E0-dire recourant =E0 moins d=
e=20
ressources (ou =E0 un algorithme plus simple, ou encore les deux) pour le=
=20
m=EAme r=E9sultat, =E0 savoir charger la liste des styles dans les listes=
=20
d=E9roulantes ?

1 réponse

Avatar
Gloops
Re,

Bon, eh bien même via le webbrowser, ça a l'air de coincer, à savoi r que
j'ai du mal à charger ma feuille de style dans une collection
StyleSheets pour compter les éléments et extraire les styles du premi er.

ça serait bien de comprendre, de toute façon, si Microsoft s'est donn é
le mal d'implémenter un objet StyleSheet et la collection qui va avec,
c'est bien qu'on est supposé être capable de s'en servir ?

En faisant du casting à deux étages j'ai fini par obtenir un
IHtmlDocument2, qui a une propriété StyleSheets retournant une
collection de feuilles de styles, mais sa propriété length me retourn e
0, alors que le document ouvert comporte dans la partie head la clause
<link rel="stylesheet" type="text/css" href="Zailes1.css">

se référant à une feuille de style située dans le même répert oire.

Si je voulais déclarer le document en XHTML il faudrait fermer la claus e
avec une barre oblique à la fin, mais de toute manière le document est
déclaré en
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/transitional.dtd">

D'ailleurs dans le corps du document j'ai mis un paragraphe pour lui
affecter un style, et il apparaît bel et bien mis en forme conforméme nt
au style, ce qui n'empêche pas la collection StyleSheets d'avoir une
length à 0.

J'utilise VS2005 sur la plateforme .Net 2, ce qui risque de ne pas me
rendre très réactif à la notion de HTML Bridge de Silverlight.
Mon WebBrowser est déclaré sous System.Windows.Forms, et les castings se
présentent comme suit :
System.Windows.Forms.HtmlDocument d =(HtmlDocument)webBrowser1.Document ;
mshtml.HTMLDocument hd = (mshtml.HTMLDocument)d.DomDocument;
mshtml.IHTMLDocument2 doc = (IHTMLDocument2)hd;
int inbFeuilles = doc.styleSheets.length;

et alors donc je m'attendais à inbFeuilles = 1, or j'obtiens 0.

Une erreur au niveau des castings, peut-être ?
D'autres ont parlé de ça à propos de football, mais là je n'ai pa s trop
suivi la question. :)

Il resterait bien la solution bête et méchante, ouvrir la feuille sty le
en fichier texte, lire la chaîne jusqu'au premier séparateur,
interrompre le traitement à la première accolade ouvrante jusqu'à
l'accolade fermante, et puis recommencer jusqu'à la fin du fichier. ç a
doit marcher, au demeurant je dois bien avouer que pour le moment c'est
un peu dans cet esprit que je génère mon fichier aspx (l'avantage é tant
que je ne passe pas trop de temps à chercher), mais je ne suis pas bien
certain que ce soit conforme à l'esprit de la plateforme .Net.

_____________________________________
Gloops a écrit, le 04/12/2009 22:29 :
Bonjour tout le monde,

Je suis en train de créer une application WinForm pour générer un e page
web aspx (enfin ... une à la fois). Chaque enregistrement sera rensei gné
par des listes déroulantes pour indiquer le type de contenant (par
exemple paragraphe, ou cellule de tableau), le type de contrôle (par
exemple asp:Label), le style affecté à chacun des deux, le texte da ns la
langue d'origine, et le texte traduit dans une autre langue, le tout
enregistré dans une table SQL Server. Le chemin du fichier a été précisé
dans un précédent formulaire, qui a aussi permis de sélectionner la
feuille de style et la page maîtresse.

Le but est de faciliter la saisie du texte, plutôt que d'aller fouill er
dans l'interface des ressources de VS 2005, qui à mon sens a ... le
mérite d'exister.

Une fois que tout ça est prêt un bouton permet de générer la pa ge aspx
et les deux fichiers de ressource.

Il faut donc commencer par charger la liste des styles dans les listes
déroulantes correspondantes. Lorsque je regarde dans l'aide, je vois que
l'objet StyleSheet est défini dans l'objet Document, et j'en déduis
qu'il me faudra donc créer sur le winform un contrôle webbrowser (n on
visible) où je charge un document temporaire ayant juste pour objet d e
faire le lien avec la feuille de style.

Alors voilà, l'objet de la question est juste de savoir si quelqu'un
voit une méthode plus optimisée, c'est-à-dire recourant à moins de
ressources (ou à un algorithme plus simple, ou encore les deux) pour le
même résultat, à savoir charger la liste des styles dans les list es
déroulantes ?