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

Windows Forms Discussion :

[C# 3] Empêcher un contrôle de sortir d'un panel


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut [C# 3] Empêcher un contrôle de sortir d'un panel
    Bonsoir,

    je vais essayer de mieux expliquer mon problème que le titre ne le fait (et aussi de mieux continuer cette phrase lol).

    J'ai donc divers UserControl sur un panel, que je peux librement déplacement avec la souris.
    Lorsque je les amène à droite ou en bas, pas de souci, mon panel affiche alors des Scrollbars.

    En revanche si je déplace un de mes UserControls à gauche ou en haut, sortant ainsi de la zone visible de mon panel, ce dernier ne m'affiche aucune Scrollbar.

    D'ou ma question : je suis à priori un peu neuneu sur ce coup la et je n'arrive pas à utiliser les bonnes coordonnées X ou Y pour empêcher mon UserControl de sortir de la zone. J'obtiens des effets "bizarre". Quelqu'un aurait il une idée ?

    Merci d'avance pour votre aide,

  2. #2
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut
    Pour l'heure, mais c'est pas terrible, j'ai fait ce code qui remet la souris avec un curseur "normal" car si l'usercontrol s'arrête bien à la bordure du panel, lorsqu'on reste appuyé sur la souris et que l'on revient à droite : ça bouge plus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    // MouseMove du UserControl
     private void panel1_MouseMove(object sender, MouseEventArgs e)
            {
                if (this._move && this.Left  > 0 && this.Top > 0)
                {
                    this.Left += e.X - this._mylocation.X;
                    this.Top += e.Y - this._mylocation.Y;
     
                    this.Parent.Invalidate();
                    this.Parent.Update();
                }
     
                if (this.Left <= 0)
                {
                    this.Left = 1;
                    this._move = false;
                    this.Cursor = System.Windows.Forms.Cursors.Default;
                }
     
                if (this.Top <= 0)
                {
                    this.Top = 1;
                    this._move = false;
                    this.Cursor = System.Windows.Forms.Cursors.Default;
                }
            }

  3. #3
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut
    Beaucoup mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      if (this._move)
                {
                    int left = (this.Left + e.X) - this._mylocation.X;
                    if (left / 2 > 0)
                        this.Left = left;
     
                    int top = (this.Top + e.Y) - this._mylocation.Y;
                    if (top / 2 > 0)
                        this.Top = top; 
     
                    this.Parent.Invalidate();
                    this.Parent.Update();
                }

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    La méthode Invalidate a elle seule ne suffit pas ?

  5. #5
    Membre extrêmement actif
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Billets dans le blog
    3
    Par défaut
    Non.. Sans elle mes lignes (dessins GDI) et autres contrôles (Boutons notamment) clignotent ou ont des effets désagréables.

    Tous ces contrôles sont dans le même Panel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Empêcher l'application de sortir de l'écran
    Par cyr42 dans le forum PyQt
    Réponses: 3
    Dernier message: 26/06/2012, 13h41
  2. Empêcher le curseur de sortir d'un formulaire
    Par gilgraslad dans le forum VB.NET
    Réponses: 1
    Dernier message: 02/05/2010, 15h35
  3. Réponses: 4
    Dernier message: 04/09/2006, 19h40
  4. empêcher un break de sortir de plusieurs boucles imbriquées
    Par quidam66 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2006, 21h52
  5. Empêcher un curseur de sortir d'une JWindow
    Par Bighobbit dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 24/03/2006, 17h10

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