J'essaie de créer un bouton dans ma application WinForms .NET 4.0 à Visual Studio 2010, ce n'est qu'une image. J'ai une fenêtre sans frontière et a une image de fond qui constitue ma peau personnalisée pour cette application. Pour les boutons Fermer / Minimiser en haut à droite de la fenêtre, je voulais créer 2 boutons simples qui sont des images uniquement qui ressemblent aux boutons Type Windows Fermer / Minimiser.
Je vais peut-être sur cette conception, alors si Je suis s'il vous plaît laissez-moi savoir. Jusqu'à présent, j'ai déterminé que j'ai besoin de créer une sous-classe pour le bouton qui ne fait que rendre l'image. La mise en œuvre finale doit rendre des images différentes pour chaque état du bouton (normal, survol, cliqué, etc.). Voici ce que j'ai jusqu'à présent: p> À ce stade, en supposant que cette conception soit appropriée, je dois savoir comment appeler SetClientsizecore () de manière appropriée. L'appelant dans le constructeur soulève une exception. Je suppose que c'est parce que le contrôle n'a pas eu la chance de l'initialiser. Je ne suis pas sûr de la fonction de remplacement qui me permettra de changer la taille de mon bouton pour s'adapter à l'image après avoir été initialisée par .NET. Des idées à ce sujet? P> p>
3 Réponses :
dans le constructeur, Vous devez définir la taille lorsque Vous devez également ombre de la propriété code> de la propriété code> et ajoutez arrière-planimage code> est null code>. p>
BackgroundImage code> est modifié en remplaçant la propriété. P>
[designerserializationVisibilty (designerserializationVisibily.Choriz)] Code> Pour empêcher la taille d'être enregistrée par le concepteur. P>
Surtout l'élément designerserializationVisibilité ... Je suis sûr que beaucoup manquent cette partie.
Lorsque vous dites «Shadow ', la propriété Taille, vous voulez dire ré-implémentez-la et envoyez-le à la base. Ce n'est pas virtuel, donc je ne peux pas le remplacer en utilisant les mêmes moyens que l'arrière-planImage.
@BOB: Oui, en utilisant le modificateur Nouveau code>.
Très utile. BTW, TYPO sur l'attribut de concepteur; devrait être: [Ivisibilité de Designerserialization (DesignerserialisationVisibi Lity.Choriz)]
@Slaks Je voulais juste attirer l'attention sur le fait qu'il y a toujours une faute de frappe dans ce post. Il devrait être [désignalisateurVisibilité (designerserializationVisibi Lity.Chorizing)] code>. Notez l'ajout du dernier i code> dans la première occurrence de visibilité code> (le changement ne signifie pas assez de caractères pour que je puisse le modifier moi-même).
Attendez que la propriété arrière-planImage soit attribuée afin que vous sachiez quelle taille vous avez besoin. Remplacer la propriété comme ceci:
Si vous souhaitez utiliser Si vous ne voulez pas utiliser Bunifuui, vous pouvez Utilisez une boîte à images car elle a également un événement de clic. Exemple: P> imagebuttons code>, je recommanderais d'utiliser Bunifuui comme il a imagebuttons code>. private void pictureBox1_Click(object Sender, EventArgs e) {
webBrowser1.Navigate("https://www.google.com");
}
Je viens de tenter cela moi-même, mais réalisa qu'une solution de contournement plus simple serait d'utiliser une commande Picturebox à la place, car il a un événement de clic, et il n'y avait rien d'autre dont j'avais besoin particulièrement de l'objet Button.