Désactiver la touche "alt"

Signaler
Messages postés
10
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
15 juin 2010
-
Messages postés
10
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
15 juin 2010
-
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

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
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é. -
Messages postés
10
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
15 juin 2010

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
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
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é. -
Messages postés
10
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
15 juin 2010

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 ;-)