Rendre transparent une textbox [Résolu]

Jeromedu79 120 Messages postés dimanche 9 janvier 2011Date d'inscription 23 décembre 2012 Dernière intervention - 21 nov. 2011 à 21:35 - Dernière réponse : Jeromedu79 120 Messages postés dimanche 9 janvier 2011Date d'inscription 23 décembre 2012 Dernière intervention
- 24 nov. 2011 à 18:58
Bonjour,

Je suis entrain de développer une application et j'aurais besoin de rendre une textbox invisible .. mais pas totalement, je m'explique :

Prenons l'exemple d'une barre d'URL d'un navigateur :
Afficher la suite 

Votre réponse

24 réponses

Meilleure réponse
cboulas 2641 Messages postés mercredi 2 juin 2004Date d'inscription 8 janvier 2014 Dernière intervention - 24 nov. 2011 à 13:13
3
Merci
Alors dans ce cas il faut modifier la fonction Paint de ton contrôle afin qu'il récupère l'arrière plan et le colle au sien juste la partie qu'il lui faut


Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT

Merci cboulas 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cboulas
Meilleure réponse
cboulas 2641 Messages postés mercredi 2 juin 2004Date d'inscription 8 janvier 2014 Dernière intervention - 24 nov. 2011 à 13:16
3
Merci
Regarde également ce lien qui devrait t'aider lien

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT

Merci cboulas 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cboulas
Jeromedu79 120 Messages postés dimanche 9 janvier 2011Date d'inscription 23 décembre 2012 Dernière intervention - 21 nov. 2011 à 21:40
0
Merci
Désolé je me suis de tromper de bouton >< je voulais voir un aperçu.

Donc, la barre d'URL ci-dessus est une image (PictureBox) importé dans la forme.

Je voudrais donc, poser une textbox dans le champ en blanc, mais quelle soit invisible et que l'on puisse écrire dedans.

Pourquoi la rendre invisible vue qu'il y aura toujours du blanc aller vous me dire ?
J'ai ma réponde L'image ci-dessus n'est qu'un exemple, je vais la remplacer par une image un peux plus sympas (sans couleur unis).

J'ai vue et télécharger la source de "Le Pivert" à cette adresse http://www.vbfrance.com//code.aspx?ID=49500 mais cela rend tous invisible selon une certaine couleur ><

Merci :)

Jérôme.
Commenter la réponse de Jeromedu79
Jeromedu79 120 Messages postés dimanche 9 janvier 2011Date d'inscription 23 décembre 2012 Dernière intervention - 21 nov. 2011 à 22:05
0
Merci
Petite précision qui me permettrait d'êtres plus clair ^^
Je voudrais rendre le fond de la textbox (backcolor) transparent :)
Commenter la réponse de Jeromedu79
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 nov. 2011 à 08:12
0
Merci
Bonjour,

1) La véritable transparence n'est pas vraiment possible à ma connaissance avec une textbox
2) un "aspect" de transparence est par contre possible, mais démesurément "cher" si l'on veut garder intactes les fonctionnalités de la textbox. Il fait appel à 24 fonctions de l'Api de Windows et au sous-classement de la textbox (rien que çà !)
Ce qui veut dire qu'en plus d'alourdir une appli, ce code (la partie sous-classement) reste assez délicat et nécessite le plus grand soin à apporter, tout au long du code de l'appli, si l'on veut éviter un crash.
J'ai ce code en VB6. Si tu y tiens vraiment, je le mets ici (et à toi de le transposer pour VB.Net). Je te le déconseille cependant personnellement très vivement.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 22 nov. 2011 à 08:17
0
Merci
Bonjour Jeromedu n°79,

Invisible sous entends souvent que l'objet ne se voit pas, il n'a pas de contour (borderStyle) et sa couleur est la même que celle de l'objet dessous qui le reçoit (la form généralement).

Le premier problème est de savoir commment trouver un textBox qui serait invisible pour saisir dedans ?

Le second problème c'est que la saisie ne sera pas infinie, elle va se limiter en zone visible à la taille en largeur de la pictureBox...

Tu parles d'une textBox et tu mets en exemple une photo de Google, ouais...

Théoriquement il suffirait d'enlever les bords et de donner la couleur du support en dessous, ou de mettre la propriété visible à faux mais on ne pourrait plus saisir dans ce cas ; par contre on peut mettre enabled = false, ça estompe le texte visible, mais on ne peut plus saisir dedans...

Pas clair, qu'elle est l'utilisation prévu d'une telle manipulation, car on comprend mieux quand on sait pourquoi c'est faire ?

Cordialement, Joe.
Commenter la réponse de ehjoe
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 nov. 2011 à 08:36
0
Merci
Pourquoi la rendre invisible vue qu'il y aura toujours du blanc aller vous me dire ?
J'ai ma réponde L'image ci-dessus n'est qu'un exemple, je vais la remplacer par une image un peux plus sympas (sans couleur unis).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
cs_Le Pivert 5388 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 1 octobre 2018 Dernière intervention - 22 nov. 2011 à 08:40
0
Merci
Bonjour,
UCFOUTU, je sais que tu ne programmes pas en Net. Depuis VB2005 on peut facilement rendre une TextBox ou autres contrôles transparents en utilisant la propriété du Form: TransparencyKey.
Je l'ai expliqué dans la source que cite notre ami Jeromedu79
Par contre la demande de Jeromedu79 n'est pas très claire. je dirais même transparente(LOL)


@+Le Pivert
Commenter la réponse de cs_Le Pivert
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 22 nov. 2011 à 08:59
0
Merci
Bonjour Le Pivert,

Demande d'explication sur l'heure et le champ

Ne connaissant pas ta propriété, dès fois qu'elle me serve : j'ai mis sur une form (vierge, donc grise) une textbox et dans le code du Load ceci :

Me.TransparencyKey = Color.Red


Oui, et alors
je vois mon texteBox, j'écris dedans, il ne se psse rien d'anormal, ma form est toujours grise, le textBox blanc et l'écriture noire

- Ça marche dans quelle condition et ça fait quoi ?

- Quel rapport avec lobjet de la question qui est de rendre transparent une textBox ?

Cordialement, Joe.
Commenter la réponse de ehjoe
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 nov. 2011 à 10:14
0
Merci
Bonjour, LePivert,
Je me demande si tu as bien lu ce que demande Jeromedu79.
Ce qu'il veut, c'est une textbox dont le fond laisse passer toutes les couleurs d'une image qu'elle recouvre (donc l'image elle même et je suppose que cette image est sur le Form lui-même).
Quelle valeur/couleur vas-tu alors donner à TransparencyKey (qui n'en accepte qu'une) ?




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 nov. 2011 à 10:35
0
Merci
Et je suppose qu'il veut conserver TOUTES les fonctionnalités de sa textbox, ainsi que son Forecolor . Que seul le fond de sa textbox laisse "voir" TOUT ce qui se trouve en-dessous, sans rien perdre ni modifier d'autre


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 22 nov. 2011 à 10:52
0
Merci
Bonjour ucfoutu,

Faidrait quand même qu'il laisse les bords, voire le focus, sinon il ne va plu retrouver sa textBox, ennuyeux pour saisir, ah ha ah

Cordialement, Joe.
Commenter la réponse de ehjoe
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 nov. 2011 à 11:02
0
Merci
Il peut tout décider, bords ou pas bords, mais ce ne sera jamais avec une véritable transparence (juste un "aspect" de transparence)
Et (surtout), cela fera plutôt "fouillis" visuellement, c'est sûr et gênera l'utilisateur final (surtout si son acuité visuelle n'est pas des meilleures).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
cs_Le Pivert 5388 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 1 octobre 2018 Dernière intervention - 22 nov. 2011 à 11:08
0
Merci
UCFOUTU et HeJoe, vous n'avez pas pris la peine de consulter ma source avant de répondre. Donc je vais expliquer le fonctionnement de la propriété TransparencyKey du Form:

Si vous mettez White à cette propriété tout ce qui est Blanc dans le Form sera transparent, texte, contrôle etc., c'est simple. Il faut donc bien choisir cette couleur pour ne rendre transparent que le texBox que l'on mettra de la même couleur. Dans ce textBox on pourras voir ce qu'il y a derrière. Cela Jeromdu79 la bien compris. Mais je me demande toujours ce qu'il veut?


Le Pivert
Commenter la réponse de cs_Le Pivert
Jeromedu79 120 Messages postés dimanche 9 janvier 2011Date d'inscription 23 décembre 2012 Dernière intervention - 22 nov. 2011 à 18:27
0
Merci
Bonsoir,

Merci pour votre aide, je m'attendais pas à autant de messages

Pour répondre à votre question Le Pivert, je vais vous présentez mon application :

Il s'agit en faite d'un navigateur très simple pour le moment car il ne dispose que de deux boutons (Précédent et suivant), d'une Textbox (Pour taper l'URL d'un site), d'un WebBrowser et d'une PictureBox.

Gardons juste la Textbox et la PictureBox.
Comme je l'es dit ci-dessus, l'utilisateur utilisant le navigateur tapera l'URL d'un site dans cette dernière.

Mais il faut quand même un peux de design pour cette Textbox au lieu d'un vaste champ blanc entouré d'un cadre à couleur unis vous ne croyez pas ?

Notre PictureBox rentre alors en action
En effet, elle servira en autre à refaire le design de la textbox :


Donc, sur notre form nous allons placé la PictureBox qui représentera un design de Texbox en mieux , puis nous allons placé cette fameuse Textbox sur la PictureBox en essayant de faire disparaître le cadre (contour), et le Background (blanc) mais tout en laissant le texte en noir (Foreground).

De sorte à ce que l'utilisateur puisse écrire dans cette textbox invisible en sélectionnant le cadre prévue à cette effet sur la PictureBox

Est-ce plus clair ?
Commenter la réponse de Jeromedu79
Utilisateur anonyme - 22 nov. 2011 à 18:37
0
Merci
Bonsoir Le Pivert,
Je viens de tester ta solution qui fonctionne très bien avec ce code :
Public Class Form1
    Dim MaTextBox As New TextBox With {.Top 20, .Left 20, .Width = 200, .BackColor = Color.WhiteSmoke}

    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Me.TransparencyKey = Color.WhiteSmoke
        e.Graphics.FillRectangle(New SolidBrush(Color.WhiteSmoke), MaTextBox.Bounds)
        If Not Me.Controls.Contains(MaTextBox) Then Me.Controls.Add(MaTextBox)
        MaTextBox.Focus
    End Sub
End Class


J'ai dû mettre WhiteSmoke comme couleur sinon il m'était impossible de cliquer sur la barre de titre de ma form.
La textbox est bien transparente, on peut y écrire dedans, mais (oui parce que il y a toujours un mais), lorsque je clique dedans, c'est l'application d'arrière plan qui prend le focus. Comme s'il y avait un trou dans le formulaire. J'ai lu les commentaires de ta source. As-tu trouvé une solution à ce problème depuis ?
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 22 nov. 2011 à 18:40
0
Merci
Ah bon Jeromedu79 alors ça change tout.
Merci de ne pas tenir compte de mon message précédent.
Commenter la réponse de Utilisateur anonyme
Jeromedu79 120 Messages postés dimanche 9 janvier 2011Date d'inscription 23 décembre 2012 Dernière intervention - 22 nov. 2011 à 19:01
0
Merci
Bonsoir Banana32

Merci pour votre réponse :)
Commenter la réponse de Jeromedu79
cs_Le Pivert 5388 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 1 octobre 2018 Dernière intervention - 23 nov. 2011 à 08:08
0
Merci
Jeromdu79, j'ai bien compris ce que tu voulais faire. Je ne pense pas que ce soit la solution, car on ne peut pas avoir le focus dans la textBox. Il va falloir chercher dans une autre direction.
banana32, je n'ai pas trouvé de solution. Cette propriété est sans doute limitée a faire un effet visuel!
Bonne programmation à tous
Commenter la réponse de cs_Le Pivert
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 23 nov. 2011 à 08:36
0
Merci
Bon,

je rappelle donc ce que j'ai dit beaucoup plus haut, d'entrée de jeu :
1) La véritable transparence n'est pas vraiment possible à ma connaissance avec une textbox
2) un "aspect" de transparence est par contre possible, mais démesurément "cher" si l'on veut garder intactes les fonctionnalités de la textbox. Il fait appel à 24 fonctions de l'Api de Windows et au sous-classement de la textbox (rien que çà !)
Ce qui veut dire qu'en plus d'alourdir une appli, ce code (la partie sous-classement) reste assez délicat et nécessite le plus grand soin à apporter, tout au long du code de l'appli, si l'on veut éviter un crash.
J'ai ce code en VB6. Si tu y tiens vraiment, je le mets ici (et à toi de le transposer pour VB.Net). Je te le déconseille cependant personnellement très vivement.

Et celle-ci, de solution, respecte tout.
Mais elle est "chère".

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.