Meilleur auteur de réponses
Panel Transparent sur un webbrowser

Question
-
Bonjour à tous.
Pour diverses raisons ( l'une d'entre elles étant d'avoir un Cursors.WaitCursor sur le browser pendant les chargements) je souhaite placer un panel totalement transparent au dessus d'un webbrowser. Malheureusement un backcolor avec une valeur color.transparent n'a aucun effet, le panel apparaît totalement noir.
Quelqu'un aurait-il une solution à me suggérer.
Pendant que j'y suis, et sur le même sujet... y a t'il une différence entre :
Panel.parent = browser
et
browser.controls.add(panel)
Merci d'avance.
- Modifié mag2013 mercredi 6 juin 2012 09:22
Réponses
-
Bonjour mag n° 2013,
- A défaut, tu peut mettre deux WebBrowser, tu effaces celui du dessus (le fonctionnel) par Visible = False, puis chargé (trouvé ou pas), tu réaffiche le second sur le premier qui sert de décore.
- Pour le curseur de ton choix, voir si le WB accepte les curseurs, sinon mettre un objet qui va afficher un faux curseur de ton choix le temps du chargement, mais tu peux aussi coincer la souris...
- La barre de progression est généralement sous le WB qui n'est pas ancré dans la form, là, toi tu veux l'afficher dessus, reste à voir si c'est accepté et fonctionnel.
Normalement et selon les exemples Microsoft, on utilise un SplitContainer (mettre en fractionnement horizontal et non ancré), puis on colle au dessus le texteBox d'adresse, puis on fractionne le SplitContainer afin de lui laisser une place pour la barre de progression en bas que l'on y colle, et in fine on ancre le webbrowser dans la partie supérieur), comme ceci :
Alors toi tu veux faire tout autre chose, ce n'est guère prévu ainsi, tu peux sans doute, mais en utilisant des subterfuges non prévus...
Cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire- Proposé comme réponse Ciprian Duduiala jeudi 7 juin 2012 07:48
- Marqué comme réponse Ciprian Duduiala lundi 11 juin 2012 07:18
Toutes les réponses
-
Bonjour,
Tu écris :
... d'avoir un Cursors.WaitCursor sur le browser pendant les chargements ...
Si j'ai bien compris tu veux afficher un curseur l'ors du chargement du WebBrowser, je viens d'essayer ce petit code pour voir :
Option Explicit On Public Class Form1 Sub Form1_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown WebBrowser1.Navigate("irolog.free.f") ' "irolog.free.fr" End Sub Sub WebBrowser1_DocumentCompleted(sender As System.Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted MsgBox("fin chargement") End Sub End Class
J'ai passé une fausse adresse pour le faire ramer, et pendant qu'il chercher tu as bien le curseur avec le sablier d'affiché sur le WebBrowser, alors à quel niveau se situe le problème (toujours si j'ai bien compris le but) ?
Pour le reste je ne sais pas, désolé ;o)
Cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire
- Modifié EhJoe mercredi 6 juin 2012 09:49
-
Bonjour,
Je pense que le panel sert de champs pour éviter d'interagir avec le webbrowser en attendant la fin du chargement, c'est bien ça ?
La transparence fonctionne bien chez moi sur un panel ... vous devriez avoir une propriété, sur le panel, qui ne prend pas en charge l'autre propriété transparence ...
Cordialement,
-
En fait, ce panel doit me servir a plusieurs choses :
1 - pouvoir empécher toute interaction avec le browser
2 - afficher le curseur souris de mon choix selon les besoins de l'application
3 - afficher éventuellement une barre d'avancement par dessus
4 - pouvoir afficher, par dessus le bowser, des zones de sélection permettant de faire des copies graphiques localisées
etc..
- Modifié mag2013 mercredi 6 juin 2012 10:29
-
Bonjour mag n° 2013,
- A défaut, tu peut mettre deux WebBrowser, tu effaces celui du dessus (le fonctionnel) par Visible = False, puis chargé (trouvé ou pas), tu réaffiche le second sur le premier qui sert de décore.
- Pour le curseur de ton choix, voir si le WB accepte les curseurs, sinon mettre un objet qui va afficher un faux curseur de ton choix le temps du chargement, mais tu peux aussi coincer la souris...
- La barre de progression est généralement sous le WB qui n'est pas ancré dans la form, là, toi tu veux l'afficher dessus, reste à voir si c'est accepté et fonctionnel.
Normalement et selon les exemples Microsoft, on utilise un SplitContainer (mettre en fractionnement horizontal et non ancré), puis on colle au dessus le texteBox d'adresse, puis on fractionne le SplitContainer afin de lui laisser une place pour la barre de progression en bas que l'on y colle, et in fine on ancre le webbrowser dans la partie supérieur), comme ceci :
Alors toi tu veux faire tout autre chose, ce n'est guère prévu ainsi, tu peux sans doute, mais en utilisant des subterfuges non prévus...
Cordialement.
Joseph Attila PUSZTAY
EhJoe Logiciels Romans Ecrire- Proposé comme réponse Ciprian Duduiala jeudi 7 juin 2012 07:48
- Marqué comme réponse Ciprian Duduiala lundi 11 juin 2012 07:18
-
Le choix du panel pourrais être un choix pour diverses raisons
Je suis un peux du même avis que Joseph sauf au lieu de prendre la propriété visible j'aurais pris la propriété (du webbrowser) disable (le contrôle reste visible)
Pour répondre a votre question de base : vous ne pouvez pas prendre un webbrowser en tant que contrôle conteneur comme le ferais un panel ou un contrôle form, ..., ...
La seul chose que vous pouvez faire est de positionner le panel en superposition du webbrowser puis de lui faire les arrangements que vous voulez
Si vous obtenez un carré noir a la place de la transparence c'est, peut etre, que vous avez un problème de puissance video ou de RAM
Les essaies que j'ai fait pour ce qui me concerne son fonctionnel et concluant c'est a dire que le panel ce trouve au dessus du webbrowser et la transparence fcontionne bien, je n'ai pas de couleur noir !
Cordialement,
-
Oui, j'ai mal expliqué la chose.
En positionnant un panel puis en m’étant le webbrowser dans le panel et en faisant panel1.enable = False cela désactivera aussi son contenu.
Tout les contrôles dans le panel hérites des même propriété, même quand elle n'existe pas.Cordialement,