Si je fais pas créer un élément de menu "Edition-> Copier" et lui attribuer les touches de raccourci "CTRL + C", puis je peux sélectionner un contrôle (RichTextBox, DataGridView, etc.) et appuyez sur "CTRL +" C "et le contrôle lui-même va gérer la copie. Je peux copier le texte, et le coller dans le bloc-notes, etc.Comment gérer la copie pour plusieurs contrôles lors de l'ajout d'un raccourci clavier à un élément de menu?
Maintenant dans tout mon formulaire, j'ai beaucoup de contrôles. Mais j'ai un contrôle personnalisé que je veux préciser que je gère les fonctionnalités de copie pour. J'ai donc ajouté le raccourci CTRL + C à Edition-> Copier, et par défaut il est défini sur Activé.
Maintenant, je dois implémenter un gestionnaire d'événement pour l'événement 'click' sur cet élément de menu. Si je mets explicitement dans le code pour gérer la copie, il fonctionne:
public void menuEditCopy_Click(object sender, EventArgs e)
{
myCustomControl.Copy();
}
Cependant, maintenant copie ne fonctionne pas sur tout autre type de contrôle. Ma première envie était de trouver le type de contrôle qui a le focus, et mettre en œuvre un ensemble limité de code de copie pour chacun d'eux:
public void menuEditCopy_Click(object sender, EventArgs e)
{
if (this.ActiveControl is MyCustomControl)
{
((MyCustomControl)this.ActiveControl).Copy();
}
else if (this.ActiveControl is RichTextBox)
{
((RichTextBox)this.ActiveControl).Copy();
}
}
etc ...
Cependant, mes contrôles sont ajoutés à un SplitContainer et le débogage montrent que this.ActiveControl est défini sur l'instance splitcontainer, pas sur le contrôle, même si je sais que le contrôle est sélectionné. Donc, ma dernière pensée
est de vérifier littéralement si chaque contrôle a le focus:
public void menuEditCopy_Click(object sender, EventArgs e)
{
if (myCustomControl.Focused)
{
myCustomControl.Copy();
}
else if (richTextBox1.Focused)
{
richTextBox1.Copy();
}
}
Je voudrais éviter cela si possible, il est beaucoup de contrôles, et si j'ajoute un nouveau contrôle, je aurait besoin de le mettre à jour. Existe-t-il une meilleure façon de le faire?
Merci