J'aimerais créer un menu contextuel personnalisé. L'idée est de créer un panneau avec une touche TEXTBOX A et une liste d'étiquettes et de pouvoir le montrer sur un clic droit et de le faire se comporter exactement comme un contextMenu. Je peux probablement utiliser un formulaire sans frontières, mais je pensais qu'il pourrait y avoir une classe, je peux dériver de cela qui m'aiderait à gérer le positionnement du menu contextuel et de l'ombrage. Des idées? Merci p>
Edit: Un exemple pour effacer quelques idées: dites que vous avez une étiquette sur votre formulaire, lorsque vous cliquez avec le bouton droit de la souris sur celui-ci (ou même à gauche) Un menu apparaît. Ce menu n'est pas le menu contextuel classique mais plutôt un panneau personnalisé avec des contrôles que j'ai créés personnaly. Un exemple est la zone de recherche sur une liste d'éléments. Lorsque vous entrez des lettres, la liste est coupée sur les éléments correspondants et lorsqu'un élément est cliqué sur le menu contextuel disparaît et la valeur sélectionnée est writs dans l'étiquette que nous avons cliqué sur. P>
3 Réponses :
Le moyen le plus simple (puisque cela ne semble pas être un menu réel) serait de créer une forme sans bordure et d'ajouter une ombre à celle-ci: en ce qui concerne la position, il n'y a pas beaucoup à cela. Vérifiez simplement Code complet ressemblerait à quelque chose comme: p> xxx pré> et pour le formulaire "MENU": P> curseur.Position CODE> ou définissez les coordonnées à l'aide des arguments dans votre code> MouseUp CODE> Mousilleur. P> public partial class CustomMenu : Form
{
public CustomMenu()
{
InitializeComponent();
this.StartPosition = FormStartPosition.Manual;
}
private const int CS_DROPSHADOW = 0x00020000;
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ClassStyle |= CS_DROPSHADOW;
return cp;
}
}
protected override void OnLostFocus(EventArgs e)
{
this.Close();
base.OnLostFocus(e);
}
}
Je pensais que en dérivant d'une certaine classe, mon menu personnalisé pourrait être utilisé comme un contextMenu en mode de conception. Mais oui, je suis d'accord que cela peut faire le travail. Merci. Lorsque vous cliquez devant un contexte, il disparaît, comment géreriez-vous cela dans votre exemple?
Vous pouvez utiliser la méthode décrite ici:
http: / /www.codeproject.com/articles/22780/super-Context-Menu-strip p>
Comme il utilise le contextMenustripa, vous pouvez définir sa position: P>
contextMenuStrip1.Show(Cursor.Position);
Lorsque vous cliquez à l'extérieur du contexteMenu, il disparaît. Oui. Avec ce Custommenu, vous pouvez aussi faire cela. J'ai testé cela et cela a fonctionné bien pour moi. Onleave et OnlostFocus ne se déroulent pas lorsque vous cliquez sur le formulaire. P> P>
Je suppose que tu parles de Winforms ici?
Clairement, vous avez manqué le contrôle contextmentrip dans la boîte à outils.
Non, je n'ai pas manqué cela, je veux créer le mien qui fait plus d'un élément parmi beaucoup. Et oui, il s'agit de Winforms en C #.
Je créerais un formulaire personnalisé sans frontières comme vous l'avez écrit.
Est-ce que ça va être un contexte réel menu i> contenant des éléments de menu personnalisés, ou ce n'est pas un menu du tout? Vous devez expliquer comment cela devrait se comporter et ressembler à des suggestions.