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#] Implémenter la sélection sur un custom control


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Par défaut [C#] Implémenter la sélection sur un custom control
    Bonjour,

    J'ai créé un custom control qui dérive de la classe System.windows.forms.controls. J'aimerais implémenter la selection dessus. j'ai essayer de surcharger la méthode OnClick mais quand je clique aucune une action n'est éxécuter. Voici mon Code :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
       public partial class MonthEventComponent : Control
        {
            private Color couleur;
            private Label labelEvenement;
     
            public MonthEventComponent(Color couleur_c, String labelEvenement_c )
            {
                InitializeComponent();
                this.couleur = couleur_c;
                this.labelEvenement.Text = labelEvenement_c;
                this.labelEvenement.ForeColor = couleur;
                this.labelEvenement.BackColor = Color.White;
                this.labelEvenement.TextAlign = ContentAlignment.MiddleLeft;
                this.labelEvenement.Dock = DockStyle.Fill;
                this.Controls.Add(labelEvenement);
            }
     
            public MonthEventComponent()
            {
                InitializeComponent();
                this.couleur = Color.Black;
                this.labelEvenement = new Label();
                this.labelEvenement.ForeColor = couleur;
                this.labelEvenement.BackColor = Color.White;
                this.labelEvenement.Text = "Evénement Initialiser";
                this.labelEvenement.TextAlign = ContentAlignment.MiddleLeft;
                this.labelEvenement.Dock = DockStyle.Fill;
     
                this.Controls.Add(labelEvenement);
     
            }
     
     
            protected override void OnClick(EventArgs e)
            {
                base.OnClick(e);
     
                MessageBox.Show("Click");
            }
     
        }
    J'aimerais savoir comment je doit procéder pour que cette événement fonctionne, avoir quelques suggestions de votre part.

    Merci d'avance,

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 612
    Par défaut
    Salut
    -----

    mais quand je clique aucune une action n'est éxécuter.
    C'est logique parce que dans ton contrôle tu crées un label, et qu'ensuite tu fais un dock.fill avec ce label.

    A partir de ce moment, puisque le label occupe toute la place et est en avant-plan, il ne t'est plus possible de cliquer dans le contrôle, tu ne peux plus cliquer que dans le label. Donc, plutôt que d'intercepter le clic dans le contrôle, tu dois intercepter le clic dans le label.

    Pour le démontrer, enlève la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.labelEvenement.Dock = DockStyle.Fill;
    de tes deux constructeurs, puis agrandit ton contrôle. Tu verras que lorsque tu cliques sur le label il ne se passe rien, mais que si tu cliques ailleurs dans le contrôle, ça fonctionne.

    avoir quelques suggestions de votre part
    Petite suggestion : ta méthode consistant à créer deux constructeurs dans le corps desquels tu reprends le même code est source d'erreurs.

    Tu devrais créer un constructeur complet (celui avec paramètres), et dans celui sans paramètre appeler le premier (this) en lui passant tes paramètres par défaut.

    A+
    Claude

Discussions similaires

  1. Problème rendu Design time sur custom control
    Par peaceandloveman01 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/11/2010, 18h06
  2. Insertion d'un Custom Control: CMyListBox
    Par Neo41 dans le forum MFC
    Réponses: 6
    Dernier message: 21/06/2005, 15h26
  3. [C#] Custom Control : Recuperer valeur formulaire
    Par victorbru dans le forum ASP.NET
    Réponses: 22
    Dernier message: 21/04/2005, 09h02
  4. [C#] Custom Control et message de confirmation
    Par lancelot69 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 23/12/2004, 15h04
  5. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56

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