IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment controler la croix de fermeture ?


Sujet :

C#

  1. #1
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut Comment controler la croix de fermeture ?
    Bonjour à tous,

    Je suis en train de coder une application et rencontre le problème suivant : il me faudrais désactiver la croix rouge de fermeture de l'application... Peut importe si le bouton d'agrandissement et de retrecissement sont également désactiver, seul celui de fermeture m'importe...
    J'ai trouvé de nombreux forums expliquant la démarche avec la lib Windows.Form, mais le problème est que je programme en Gtk... Et avec cette lib, impossible de trouver...

    Un grand merci à qui pourrait me venir en aide...

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Il faut mettre la propriété ControlBox du formulaire à false, accessible en mode design

  3. #3
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Ca vient surement de ma fatigue (), mais impossible de mettre la main sur ce fameux "ControlBox"...
    Une petite capture d'écran des propriétés de ma fenetre :

    Nom : Capture.png
Affichages : 263
Taille : 145,1 Ko
    Nom : Capture2.png
Affichages : 248
Taille : 103,4 Ko

    Je ne vois pas du tout...

  4. #4
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Tu fait du GTK? En tout cas le propriété sous WinForm "windows" existe bel et bien.

    De plus, si ton but est d'empêcher la fermeture de ton application, cette astuce n'empêchera pas l'utilisateur d'utiliser un raccourci de fermeture (comme alt+f4, par exemple).

  5. #5
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    La propriété FormBorderStyle à "None" te conviendra peut etre

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je ne connais pas le gtk, mais je sais qu'avec les win forms on peut réagir aux événements de fermeture de fenêtre.
    Si c la même chose avec gtk tu pourrais relancer ta fenêtre à sa fermeture ?

  7. #7
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Je ne connais pas le gtk, mais je sais qu'avec les win forms on peut réagir aux événements de fermeture de fenêtre.
    Si c la même chose avec gtk tu pourrais relancer ta fenêtre à sa fermeture ?
    Ouch! Ced600, tu m'étonnes là :-) je ferais plutot quelquechose comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private bool m_allowClosing = false;
     
            private void MyForm_FormClosing(object sender, FormClosingEventArgs e)
            {
                e.Cancel = !m_allowClosing;
            }
    En ayant bien sur, un endroit dans le code qui permet de faire basculer le allowClosing à true un certain moment...

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Ouch! Ced600, tu m'étonnes là :-)
    Pourquoi ? Je pensais que les event close et closing était pour faire ce que l'on doit faire à la fermeture des winforms ?
    Je peut me tromper ne faisant pas vraiment de winforms (que des trucs bateau car pas besoin de véritable IHM dans mes projets).

  9. #9
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    C'etait ton idée de "relancer la fenêtre" qui m'a fait réagir :-)

  10. #10
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par neptune Voir le message
    C'etait ton idée de "relancer la fenêtre" qui m'a fait réagir :-)
    Ha bah cela c tiré des spams, des fenêtre de pub, des trojan qui te font chiez, ...
    Et puis je suis assez barabare.
    Tu me fermes pas de pb je te relance une nouvelle instance de moi même

  11. #11
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Bonsoir à tous,

    Désolé de ma petite absence...
    Tout d'abord merci pour vos réponses...
    Malheureusement, toutes les propriétés que vous m'avez citées sont introuvables en Gtk... Elles sont certainement faites pour Windows.Form et je n'arrive pas à mettre la main sur leur équivalent en Gtk...
    En ce qui concerne l'idée de lancer une nouvelle instance de la fenêtre, ca aurait pu etre pas mal... Ce n'est toutefois pas mon but... Pour être plus explicite, mon problème est le suivant : mon application est gérée par un thread principal, qui enverra un second thread pour réaliser un traitement à la demande de l'utilisateur... Chacun de ces threads possèdent son "bouton Deconnex" côté interface utilisateur, qui envoient lorsque cliqué des données au serveur, mais de maniere differentes suivant l'un ou l'autre... En fait, quand un des 2 thread est lancé, un bouton Deconnex est activé et l'autre est désactivé, et réciproque quand c'est l'autre thread qui reprend la main... Donc jusque là tout va bien, la gestion de la deconnexion utilisateur est facilement réalisée... La où tout se corse est lorsque l'utilisateur ne passe pas par les boutons de deconnexion prévus à cet effet mais qu'il clique sur cette satanée croix... Je ne dispose pas à l'heure actuelle de moyen de savoir dans quel thread il se trouve et donc j'ignore de quelles facons envoyer mes données... Si j'implémente une maniere et qu'il clique sur la croix lors du "mauvais" thread : tout plante... C'est pourquoi je voulais privé l'utilisateur de cette croix et "l'obligé" à passer par les boutons de deconnexion prévus....
    Je vais essayer néanmoins de mettre en place un booleen me permettant de savoir dans quel thread le programme se trouve afin de savoir de quelle maniere envoyer mes donnes au serveur...
    Si quelqu'un à néanmoins une suggestion ou une solution, je suis preneur !!

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je comprends le problème :
    ne peux tu pas cacher la fenêtre quand le bouton est désactivé ?

  13. #13
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Et malheureusement non... Il s'agit d'une fenêtre principale sur laquelle l'utilisateur possède ses boutons de controle...

  14. #14
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Ha ok j'avais compris que lorsque tu lançais des threads tu lancé une nouvelle petite fenêtre avec une animation et le bouton activé ou désactivé.

    Bon en même temps si tu mets un label :
    Ne pas cliquer sur la croix rouge
    Tu te décharges des responsabilité en cas de plantage, et même si ce n'est pas l'idéal, tu as un premier moyen d'éviter le problème : l'intelligence de l'utilisateur.

    Bon je sais il n'y a que 10% d'utilisateurs intélligent, mais bon par défaut d'autre chose ...

  15. #15
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    je viens de penser à un truc :
    Répérer la position de la souris et si elle est sur le boutons croix rouge hop tu désactive temporairement le clique gauche.

  16. #16
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    lool
    Non c'est vrai c'est que s'il le faut, je le ferai... Je n'y avais pas pensé à vrai dire... Mais bon, on a tendance à m'apprendre (IUT Informatique) que l'utilisateur est un singe et donc à blinder au maximum les programmes...
    Repérer la position de la souris en revanche semble être une alternative fort interessante qu'il faudrait tenter de mettre en place... L'implémentation de cette solution est-elle compliquée ?? Je n'ai jamais jusqu'à présent gérer les positions de souris... Je me lance dans les recherche Google !!

  17. #17
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Moi non plus.
    Je sais quand winform on a un event qui est déclenché lorsque l'on passe sur un controle, c'est tout, sais pas plus.

  18. #18
    Membre régulier Avatar de eaglesnipe
    Homme Profil pro
    Ingénieur Etudes et Développement
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes et Développement
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 76
    Points
    76
    Par défaut
    Semblerait-il que cette portion de code permait de savoir où se trouve la souris sur l'écran :

    --------------------------------------

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace Mouse_event
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    Text = "Souris en " + (e.X - AutoScrollPosition.X) + " x " + (e.Y - AutoScrollPosition.Y);
    }
    }
    }

    -----------------------------------------

    Je n'ai pas eu l'occasion de le tester encore, je ne suis pas sur la bonne machine... Je te tiens au courant de son efficacité dès que possible, mais à première vu, il a l'air correct... En revanche, et encore une fois, c'est codé pour du Windows.Form... Va encore falloir que je cherche un équivalent en Gtk... Je suis en train de me dire que j'aurais mieux fait de tout commencer en Windows.Form, j'aurais certainement eu moins d'ennuis...

    Sauf que je suis en train de me demander que même si j'arrive à savoir quand l'utilisateur approche la souris de la croix de fermeture, je ne peux pas garantir que la croix se trouve bel et bien à la position supposée lors de la programmation ??? Meme si je prive l'utilisateur du redimensionnement de la fenetre, de son déplacement et autres, il suffit qu'il possède un écran différent de la normale, style panoramique, 20", 24" ou autre pour que l'astuce devienne totalement inutile....
    Ne serais-je pas en train de considérablement compliqué le code pour faire quelque chose qui semblait à priori simple ??

  19. #19
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Citation Envoyé par eaglesnipe Voir le message
    ....
    Ne serais-je pas en train de considérablement compliqué le code pour faire quelque chose qui semblait à priori simple ??
    Je crois que oui! relis les premieres réponses à ton post

  20. #20
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par fally Voir le message
    La propriété FormBorderStyle à "None" te conviendra peut etre
    Tu parles de cette réponse qui est passé inaperçus à cause de mon intervention ?

    Je m'en excuse d'ailleurs.

    Mais sinon une position de souris doit pouvoir se calculer en fonction du point le plus en haut à gauche de la fenêtre.
    Bref l'idée serait d'avoir accés au coordonnée du point en haut à gauche de la fenêtre et à la longueur et largeur de celle-ci.
    Comme cela tu détermine le point en haut à droite.
    Puis à l'aide d'un delta calculé à peu près comme tu peux, tu à la zone où tu dois désactiver le clique gauche souris

    Bref regarde si la proposition de fally marche

Discussions similaires

  1. [JDialog] Enlever la croix de fermeture
    Par binouche22 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 08/04/2011, 11h55
  2. Réponses: 15
    Dernier message: 22/02/2009, 14h36
  3. Comment controler l'insertion de record dans ma table?
    Par einegel dans le forum Bases de données
    Réponses: 7
    Dernier message: 22/11/2004, 18h29
  4. Cacher la croix de fermeture
    Par jean tof dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/07/2004, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo