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 :

Évènement C# avec argument


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Évènement C# avec argument
    Bonjour,

    Desole, clavier qwertz.

    Je suis en WPF.
    J'ai une class principale avec juste un bouton et j'ai un usercontrol avec juste une textbox.
    Dans la class principale j'utilise naturellement l'événement click du bouton et je voudrais qu'a ce moment ca dit a un autre événement que le clique a lieu et que ce second événement provoque l'affichage d'un text dans la textbox, text défini dans la class principale. Il faut donc passer un parametre (le string qui sera affiche) et qu'il arrive dans la textbox du usercontrol.

    Voici mon code :

    Class principale :

    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
     
    public partial class MainWindow : Window
    	{
    		public MainWindow()
    		{
    			InitializeComponent();
    		}
     
    		public delegate void EditMarketingBoxItem(object sender, EventArgs e);
    		public event EditMarketingBoxItem Edit = null;
     
    		private void Button_Click(object sender, RoutedEventArgs e)
    		{
    			if (Edit != null)
    				Edit(this, new UserControl1("Ok"));
     
    		}
    	}

    Class du usercontrol :

    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
     
    public partial class UserControl1 : UserControl
    	{
    		public UserControl1( )
    		{
    			InitializeComponent();
    			MainWindow main = new MainWindow();
    			main.Edit += main_Edit;
     
    		}
     
    		void main_Edit(object sender, EventArgs e)
    		{
    			textblock.Text = "Ok";
    		}
     
    	}

    Malheureusement j'ai une boucle infini sur le constructeur du usercontrol et mon application plante. Je doute meme que la base du code est juste.

    Pouvez vous m'aider ?

    J'ai deja essaye de comprendre les evenements a travers plus de 5 tuto mais impossible pour moi de creer moi meme un evenement personnalise qui envoie quelque chose dans une autre class. Si on m'aide a faire fonctionner ce programme je pense comprendre car j'ai imaginé le fonctionnement moi meme.

    Merci d'avance ...

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    ta demande est très confuse, je comprends pas bien où tu veux en venir (et y'a des trucs bizarres dans ton code qui m'aident pas vraiment).
    En fin de compte pourquoi tu ne veux pas simplement appeler directement la méthode de ton instance de UserControl1 ?
    J'ai un peu de mal avec ton trip sur les events.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Je ne suis pas sûr mais tu as une MainWindow qui contient un UserControl1 et un UserControl1 qui contient une MainWindow. Ca fait pas une sortie de boucle infinie ça ? ^^
    Je ne pense pas que tu ais besoin des passer par des événements ici. Cela aurait un sens si tu voulais faire remonter un message depuis le usercontrol vers ta MainWindows. Peut-être que ne n'ai pas compris le code mais pourquoi ne pas directement faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void Button_Click(object sender, RoutedEventArgs e)
    		{
    			this.UserControl11.textblock.Text = "Ok";
     
    		}
    Lors du clic sur le bouton ?
    après je te soupçonne de mélanger classe et instance de classe. Dans le code que je te propose tu as une instance de UserControl1 nommér UserControl11 sur ta MainWindows. Sur laquelle on vient changer la valeur de texblock.Text lorsqu'on clique sur un bouton de la MainWindows.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Bonsoir

    J'ai arrangé un peu le code mais j'ai encore cette boucle infinie. En faite c'est beaucoup plus compliqué que ça car j'ai un line editor (je suis que ça s'appelle ainsi) et à l'intérieur j'ai des controls devexpress (un par ligne) et dans ces contrôles j'ai des user controls (en faite c'est des petites cases à déplacer comme sur windows 8). Bref quand je double clique sur une de ces cases j'ouvre une pop up avec un user control dedans et dans ce user control on peut éditer l'url de l'image de la cas où on a cliqué mais au moment de l'ouverture de la pop up il y a la textbox préremplie avec la valeur actuelle de l'url.

    Bref il faudrait que j'utilise des événements pour passer les valeurs de la case vers le user control puis lors de la validation, du user control vers la case pour modifier l'image qui se trouve à l'intérieur.

    En faite la pop up ne s'affichera pas dans le user control de la petite case mais dans le grand objet devexpress qui fait toute la ligne avec les cases.

    Ce code que je vous ais montré c'est pour tester le passage d'une valeur à partir du user control où je double clique vers le user control qui s'ouvre en pop up.

    J'espère que c'est faisable.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Tu n'y arriveras pas avec des événements.
    Dans la classe principale tu instancies un usercontrol dans une autre form et passe ton ancienne url dans le constructeur de ton usercontrol. Tu fais un set du text de ta textbox dans ton usercontrol.
    Affiche la nouvelle form avec un showdialog; ton utilisateur modifie l'url de latextbox et clique sur un bouton pour valider. Tu fais disparaitre la nouvelle form et tu récupère ta valeur modifiée.
    Soit tu mets public ta textbox soit tu fais une fonction getUrl dans le style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public string getUrl()
    {
    return this.textboxUrl.Text;
    }
    Mais oublies les événements. Je pense que tu n'as pas compris à quoi ça sert.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Bonsoir

    En faite j'ai fais le truc à l'envers.
    Je déclare l'événement dans le user control, je m'y abonne dans la mainform puis dans la mainform je passe les paramètres avec l'event grâce à la class EventArgs qui appartient à un Framework de Microsoft d'après ce qu'on m'a dit^^

    Bref tout fonctionne bien

    Reste plus qu'à faire le sens inverse, une fois que les url mises à jour sont dans le user control et que l'utilisateur valide, il faut que les valeurs passent dans la mainform pour modification mais c'est exactement pareil que pour amener les valeurs actuelles dans le usercontrol sauf que c'est dans le sens inverse.

    Bref problème résolu

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

Discussions similaires

  1. Ajouter un évènement onclick avec un argument au callback
    Par _jey_ dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 17/07/2009, 15h24
  2. Fonction callback avec arguments ?
    Par sorry60 dans le forum GTK+ avec C & C++
    Réponses: 39
    Dernier message: 07/11/2005, 10h41
  3. appel d'un module externe avec argument en entree
    Par oursblanc dans le forum Modules
    Réponses: 6
    Dernier message: 20/10/2005, 23h16
  4. creer une fonction avec arguments
    Par niglo dans le forum ASP
    Réponses: 3
    Dernier message: 03/06/2005, 08h04
  5. [C#] Equivalent Property avec arguments de VB.NET
    Par Antz dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/03/2004, 13h14

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