J'ai besoin de remplacer la fonction de débordement standard dans un ToolStrip par un bouton "Plus ..." qui ferait alors apparaître un menu avec les éléments débordés. Est-ce que quelqu'un a des idées sur la façon d'accomplir cela?ToolStrip Overflow
Répondre
J'ai écrit quelque chose de très similaire à cela il y a quelque temps. Le code que j'ai utilisé est collé ci-dessous, et vous êtes libre de le modifier pour répondre à vos besoins. Le ToolStripCustomiseMenuItem est essentiellement votre bouton "Plus" qui remplit un menu contextuel DropDown lorsque vous cliquez dessus. J'espère que cela vous aide, à tout le moins cela devrait être un bon point de départ ...
public class ToolStripCustomiseMenuItem : ToolStripDropDownButton {
public ToolStripCustomiseMenuItem()
: base("Add Remove Buttons") {
this.Overflow = ToolStripItemOverflow.Always;
DropDown = CreateCheckImageContextMenuStrip();
}
ContextMenuStrip checkImageContextMenuStrip = new ContextMenuStrip();
internal ContextMenuStrip CreateCheckImageContextMenuStrip() {
ContextMenuStrip checkImageContextMenuStrip = new ContextMenuStrip();
checkImageContextMenuStrip.ShowCheckMargin = true;
checkImageContextMenuStrip.ShowImageMargin = true;
checkImageContextMenuStrip.Closing += new ToolStripDropDownClosingEventHandler(checkImageContextMenuStrip_Closing);
checkImageContextMenuStrip.Opening += new CancelEventHandler(checkImageContextMenuStrip_Opening);
DropDownOpening += new EventHandler(ToolStripAddRemoveMenuItem_DropDownOpening);
return checkImageContextMenuStrip;
}
void checkImageContextMenuStrip_Opening(object sender, CancelEventArgs e) {
}
void ToolStripAddRemoveMenuItem_DropDownOpening(object sender, EventArgs e) {
DropDownItems.Clear();
if (this.Owner == null) return;
foreach (ToolStripItem ti in Owner.Items) {
if (ti is ToolStripSeparator) continue;
if (ti == this) continue;
MyToolStripCheckedMenuItem itm = new MyToolStripCheckedMenuItem(ti);
itm.Checked = ti.Visible;
DropDownItems.Add(itm);
}
}
void checkImageContextMenuStrip_Closing(object sender, ToolStripDropDownClosingEventArgs e) {
if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked) {
e.Cancel = true;
}
}
}
internal class MyToolStripCheckedMenuItem : ToolStripMenuItem {
ToolStripItem tsi;
public MyToolStripCheckedMenuItem(ToolStripItem tsi)
: base(tsi.Text) {
this.tsi = tsi;
this.Image = tsi.Image;
this.CheckOnClick = true;
this.CheckState = CheckState.Checked;
CheckedChanged += new EventHandler(MyToolStripCheckedMenuItem_CheckedChanged);
}
void MyToolStripCheckedMenuItem_CheckedChanged(object sender, EventArgs e) {
tsi.Visible = this.Checked;
}
}
Vous pouvez piéger l'événement de peinture sur le bouton en appelant
toolStrip1.OverflowButton.Paint += new PaintEventHandler(OverflowButton_Paint);
Ce qui, en théorie, devrait vous permettre de faire dire « Mais ... », mais je ne pouvais pas régler la largeur du trop-plein Le bouton est autre chose que la largeur par défaut (étroite).
En outre, une autre idée était que vous pouvez intercepter VisibleChanged
sur le OverflowButton puis injecter manuellement un bouton de division dans la barre d'outils. La partie difficile est de savoir où mettre ce bouton.
- 1. ToolStrip Boutons clignote
- 2. Masquage SPAN Overflow
- 3. fo: data-cell overflow
- 4. css div overflow et taille horizontale dynamique
- 5. Message d'en-tête comme à Stack Overflow
- 6. Overflow css attribut navigateur différences d'interprétation
- 7. C# Winforms Comment mettre à jour toolStrip dans la fonction
- 8. Problème de "Red Cross" sur MenuStrip et ToolStrip
- 9. Quel est le problème avec la propriété RenderMode de ToolStrip?
- 10. Énumération générique des éléments du contrôle .Net (MenuStrip, ToolStrip, StatusStrip)
- 11. Comment réorganiser les éléments ToolStrip dans le code
- 12. Comment Stack Overflow reflète-t-il ce que vous tapez?
- 13. Overflow lors du calcul d'un const dans VBA
- 14. image centre à l'intérieur de parenté overflow-caché
- 15. créer un menu avec CSS et overflow: auto
- 16. StructureMap Class Chaining - Stack Overflow ou d'autres erreurs
- 17. Comment afficher un message contextuel comme dans Stack Overflow
- 18. Système de vote Stack Overflow/reddit en php
- 19. Winform toolStrip Status L'étiquette ne montre rien: est-ce un bug?
- 20. Comment puis-je implémenter une fonctionnalité "Questions connexes" comme celle de Stack Overflow?
- 21. Analyse de chaîne de date non standard à partir de Stack Overflow dans un .NET DateTime
- 22. Comment puis-je rechercher dans toutes les réponses d'une quête donnée sur Stack Overflow?
- 23. Comment générer les "gravatars" par défaut aléatoires comme sur Stack Overflow?
- 24. en retirant les barres de défilement dans IE8 (overflow: hidden ne fonctionne pas)
- 25. Existe-t-il une alternative open source au modèle Stack Overflow?
- 26. Question Javascript: Détecter les enfants actuellement visibles dans un 'overflow: auto;' élément parent?
- 27. Le buffer overflow/overrun est-il possible dans une application Web asp.net C# entièrement gérée
- 28. La bordure supérieure de la table disparait en utilisant le style "overflow: hidden" et "border-collapse"
- 29. SQL Server est extrêmement lent lors de l'exécution des requêtes sur le vidage de données Stack Overflow
- 30. vol stationnaire jQuery(): mouseout ne se déclenche pas lorsque vous utilisez overflow: auto (avec les barres de défilement)