2017-01-03 6 views
0

J'utilise vb.net et j'essaye de créer un bouton transparent qui couvre une étiquette. L'idée est que vous pouvez cliquer sur ce bouton pour sélectionner l'étiquette comme celle que vous éditez. L'étiquette peut être visible ou invisible afin que l'utilisateur puisse voir une autre étiquette derrière elle à certains moments, donc il suffit de cliquer sur l'étiquette ne fonctionne pas. J'ai mis le bouton plat du bouton à plat, et le retour à la toile> transparent. Je sais que le bouton est transparent car vous pouvez toujours voir un arrière-plan derrière tout. Je sais aussi que le bouton obscurcit le texte parce que si je place le bouton à moitié sur l'étiquette, je peux encore voir la moitié qui n'est pas couverte. Je suis complètement perdu, donc toute aide sera appréciée. Comme je viens de créer ce compte, je n'ai pas assez de réputation pour publier plus de deux liens, ce qui explique les espaces.Comment créer un bouton transparent qui ne cache pas les étiquettes derrière lui dans VB.Net

EDIT: Les boutons transparents sont sur tous les carrés de la grille. Je veux cliquer sur le bouton transparent pour que vous ayez l'impression de cliquer sur le quadrillage. Ensuite, le but est de cliquer sur un nombre sur le pavé à côté pour modifier ce carré. Vous devriez être en mesure de voir les "1" que vous pouvez voir dans l'image sans les boutons du tout. Je veux être en mesure d'avoir les boutons là-bas afin que vous puissiez toujours cliquer dessus pour sélectionner une cellule, mais je veux toujours voir les chiffres sur les étiquettes derrière. Alors, comment puis-je y arriver?

Comment ça devrait ressembler (Le bouton est supprimé):

Comment ça regarde avec le bouton:

Comment ça regarde avec le bouton déplacé pour le contrôle de l'utilisateur moitié obscure:

Propriétés de mon bouton (1 de 2):

Propriétés de mon bouton (2 de 2):

+1

Ce n'est pas du tout clair quel est le problème - vous n'avez pas posé de question. Il y a beaucoup de boutons là-bas - quel est exactement le problème? S'il vous plaît lire [demander] et prendre le [tour]. – Plutonix

+0

Merci, je l'ai édité pour le rendre plus clair. –

+0

Il n'y a pas de véritable concept d'un contrôle étant "derrière" un autre. S'ils sont dans la même collection de contrôles, ils sont frères et soeurs. Ils peuvent être derrière ou en face de l'autre en termes de ZOrder, mais lorsque l'emplacement chevauche cela ne provoque pas l'effet que vous voulez. Vous devriez toujours lire [ask] et prendre le [tour] – Plutonix

Répondre

0

D'après ce que vous avez décrit, je ne vois pas que vous devez nécessairement cacher un bouton sur une étiquette. Je vous recommande de ne pas chevaucher les contrôles - en particulier si vous autorisez l'utilisateur à redimensionner le formulaire. En tant que solution, je mettrais à jour le texte d'un bouton sélectionné sur un événement de clic avec le texte initial dans le bouton étant vide (c'est-à-dire "").

est Ci-dessous un exemple WinForms qui tente de reproduire ce que vous avez décrit:

http://i.imgur.com/pWeqVHt.png

Public Class Form1 
    Private _selButton As Button 'Current button selected 
    Public Sub New() 
     InitializeComponent() 

     AddHandler btn1.Click, AddressOf UpdateText_Click 
     AddHandler btn2.Click, AddressOf UpdateText_Click 
     AddHandler btn3.Click, AddressOf UpdateText_Click 
     AddHandler btn4.Click, AddressOf UpdateText_Click 
     AddHandler btn5.Click, AddressOf UpdateText_Click 
     AddHandler btn6.Click, AddressOf UpdateText_Click 
     AddHandler btn7.Click, AddressOf UpdateText_Click   
     AddHandler btn8.Click, AddressOf UpdateText_Click 
     AddHandler btn9.Click, AddressOf UpdateText_Click 
     AddHandler btn0.Click, AddressOf UpdateText_Click 
    End Sub 

    Private Sub UpdateText_Click(sender As Object, e As EventArgs) 
     Dim thisButton = DirectCast(sender, Button) 
     If (_selButton IsNot Nothing) Then 
      _selButton.Text = thisButton.Text 
      _selButton.BackColor = SystemColors.Control 
     End If 
    End Sub 

    Private Sub matrixbtn1_Click(sender As Object, e As EventArgs) Handles matrixbtn1.Click 
     _selButton = matrixbtn 
     matrixbtn1.BackColor = Color.Aqua 
    End Sub 
End Class 
0

Obtenez un petit panneau, et personnaliser ses propriétés. Double-cliquez dessus. Vous serez amené à la section de code pour coder l'événement click d'un panneau. Pas besoin d'utiliser un bouton du tout. Vous pouvez utiliser n'importe quel contrôle en VB comme un bouton. Cela inclut les étiquettes, les boîtes de photos, les boîtes de groupe et même le formulaire lui-même. Tous ont un événement de clic que vous pouvez utiliser.Il suffit de le sélectionner forment le menu déroulant événement: The dropdown event menu.

Ceci est la forme développée:

As you can see, lots of options. Look through and explore them.

Notez que Load signifie ce qui se passe au démarrage. Codez ici ce qui se passe juste quand le formulaire s'ouvre.