Désactiver la touche "alt"

cs_ledragon Messages postés 10 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 15 juin 2010 - 9 févr. 2010 à 20:01
cs_ledragon Messages postés 10 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 15 juin 2010 - 10 févr. 2010 à 19:18
bonjour à tous,

je débute en csharp, d'habitude je développe surtout en actionscript (flash) actuellement je découvre csharp avec visual studio express, j'essaye de désactiver la touche "alt" pour éviter qu'on puisse faire "alf+f4" pour une application en fullscreen, je me suis un peu documenter sur le site et j'ai trouver l'expression "hook" j'ai trouver des sources également içi mais c'est encore un peu confu pour moi,

auriez vous un petit exemple assez simple pour désactiver cette touche,ou eventuellement une explication sur le principe merci

4 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
10 févr. 2010 à 10:04
Salut

Tu peux effectivement ajouter un hook sur l'appui de la touche Alt, mais là tu toucheras automatiquement à du non managé si je ne m'abuse.

Mais un moyen beaucoup plus simple d'éviter la fermeture de la fenêtre. Il existe l'événement Form.Closing (à ne pas confondre avec Form.Close). Cet événement utilise un objet CancelEventArgs dont tu peux mettre la propriété Cancel à true pour annuler la fermeture de la fenêtre.

N'oublie pas cependant d'utiliser une condition, pour te permettre de fermer la fenêtre tout de même, un peu comme ça :

private void Form1_Closing(object sender, CancelEventArgs e)
{
    if(!AuthoriseAFermer) e.Cancel = true;
}


et évidemment, tu mets AuthoriseAFermer à true quand tu veux réellement fermer la fenêtre.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
cs_ledragon Messages postés 10 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 15 juin 2010
10 févr. 2010 à 13:53
un grand merci pour ta réponse, j'ai essayer ton code et il me met une erreur pour void si quelqun a une idée merci merci
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
10 févr. 2010 à 14:36
Une erreur pour "void" ?? Tu dois te tromper... Dans tous les cas, s'il t'indique une erreur, merci de nous dire quelle est cette erreur !

Mais normalement, tu n'as même pas à faire copier-coller de mon code. Je t'ai dit qu'il fallait utiliser l'événement Form.Closing. Pour générer une méthode appelée lors d'un événement sur un composant graphique, il suffit d'aller dans le mode design. Tu dois ensuite sélectionner le composant (en l'occurrence, ta form). Dans la fenêtre propriétés, tu as un bouton "Evénements". Il fera apparaître l'ensemble des événements de ta form. Tu double cliques sur l'événement Closing, et ça te génèrera automatiquement :
- dans ton fichier Designer.cs :
this.Closing += new CancelEventHandler(Form1_Closing);

- et dans ton fichier .cs
void Form1_Closing(object sender, CancelEventArgs e)
{

}

Et tu écris ton code dans cette méthode Form1_Closing (évidemment, ce nom dépend du nom de ta classe), dans laquelle tu dois, si tu ne comptes pas fermer la fenêtre, mettre e.Cancel à true.


PS : Il s'agit là du b.a.-ba du C#. La gestion des hook est, au contraire, de la programmation avancée.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
cs_ledragon Messages postés 10 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 15 juin 2010
10 févr. 2010 à 19:18
merci beaucoup, c'est vrai que j'ai été un petit trop vite lol je vais voir sa et me mettre à la base de csharp si vous avez un tuto pour débutant je suis preneur,

encore merci ;-)
0