6
votes

ASP.NET VB Contrôle de l'utilisateur soulevant un événement sur la page appelante

J'essaie d'apprendre sur les contrôles des utilisateurs. J'ai créé un contrôle utilisateur comportant une zone de texte et un bouton. Ce que j'aimerais pouvoir faire est lorsque je clique sur le bouton de la commande de l'utilisateur, remplissez une étiquette dans la page ASPX. Je comprends que je pouvais simplement avoir un bouton sur la page qui utilise des propriétés sur le contrôle de l'utilisateur pour obtenir cette information .. Mais j'aimerais savoir comment le faire avec le bouton de contrôle de l'utilisateur. La raison de ceci est Le bouton n'est qu'un exemple .. un outil d'apprentissage. Si je peux obtenir ce travail, je voudrais probablement mettre la chose dans le contrôle de l'utilisateur qui pourrait nécessiter ce type d'informations de passage. De toute façon.

Quoi qu'il en soit, j'espère que quelqu'un peut prêter une main.


0 commentaires

3 Réponses :


1
votes

Le problème est que si vous rendez le USERCONTROL dépendant de sa page parent, il n'est plus portable et vous avez vaincu le but de le faire en UserControl en premier lieu.

C'est probablement la raison pour laquelle vous rencontrez des délégués et ce que vous utilisez dans tous les exemples - les gens tentent de supprimer la dépendance sur la page parlée en permettant à l'UserControl d'appeler une méthode passée, au lieu de définir directement l'étiquette dans le Page des parents.

Si cela est juste pour la pratique, vous feriez mieux d'appuyer sur un bouton sur la page mère pour définir une étiquette dans l'UserControl, plutôt que dans l'inverse. La façon dont vous le faites, n'est pas un bon design et devrait être évité pour de vraies applications.


1 commentaires

Une chose que je pensais pour un contrôle de l'utilisateur. Vous avez une boîte multiples qui permet à une autosuggère qui serait utilisée à plusieurs endroits .. Le dernier élément que l'utilisateur sélectionne est la valeur que je souhaite. Son assez impliqué et ne voulait pas copier et coller autant de code ou encombrement. Alors, pensions qu'un contrôle de l'utilisateur fonctionnerait bien. La chose est, une fois que cette valeur est sélectionnée, j'espérais ne pas avoir à avoir l'utilisateur Cliquez sur un bouton pour récupérer la valeur de la page ... dans ce dont vous parlez .. Quelle approche prendriez-vous. Merci



19
votes

Voir si Ce tutoriel peut aider. La meilleure façon de le faire est définitivement de métro un événement, ce qui n'est pas aussi difficile que vous le pensez. Les bases sont:

1. Définissez un événement dans votre classe de contrôle:

Evénement public MyEvent comme système.Eventhandler

2. Soulevez l'événement dans une sous ou une fonction de votre classe de contrôle:

Raiseevent MyEvent (moi, nouvel événement ())

3. Gérer l'événement sur la page contenant votre commande: xxx


3 commentaires

merci pour l'info .. me demandait ... Depuis que vous avez un moyen aussi simple et simple de le faire .. Comment réussissez-vous les informations dans l'événement. Ou est-ce que lorsque l'événement est tiré (votre «truck ici ) Je saisirais la valeur de la property qui est définie sur le contrôle de l'utilisateur


Si vous souhaitez transmettre des informations dans l'événement, vous devez modifier votre code "RaiseeEvent" pour réussir quelque chose d'autre que New Eventargs () . Pour le garder simple, vous pouvez même passer une corde, comme ceci: Raiseeevent MyEvent (moi, mystring) , puis modifier le deuxième paramètre du MyControl_Myevent SUB SUB sur votre page Pour être quelque chose comme byval S comme chaîne au lieu de byval e comme étant éventuellement . Vous pouvez passer ce que vous voulez dans l'événement. Je viens d'utiliser evenargs parce que c'est un moyen courant de le faire (la plupart des gens utilisent leur propre classe qui hérite de eventargs).


Vient de courir à travers cela. Si vous avez un UserControl sur une page, décidez d'ajouter des événements, vous souhaitez supprimer le USERCONTROL de la page d'accueil et l'ajouter. Au moins dans VB, la déclaration de contrôle semble ne pas être suffisamment intelligente pour ajouter les sans-heurts une fois qu'elle est déclarée. Bonne réponse.



2
votes

Je crois ce que vous voudriez faire, c'est que votre UserControl soulever un événement. Cet article MSDN explique comment élever des événements et a des exemples VB. Ensuite, votre page peut abonner à l'événement que votre UserControl augmente et définit toutes les valeurs que vous devez définir. Il serait peut-être préférable d'exposer certains de vos champs d'UserControl (c'est-à-dire des boîtes de texte, etc.) en tant que propriétés publiques afin qu'elles soient accessibles à partir du contrôle souscrit.


0 commentaires