Soyez le premier à donner votre avis sur cette source.
Vue 21 203 fois - Téléchargée 520 fois
'Le controle Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Text Imports System.Web Imports System.Web.UI <ToolboxData("<{0}:ControlExemple runat=""server""></{0}:ControlExemple>")> _ Public Class ControlExemple Inherits Control Implements ICallbackEventHandler Public Event MouseOver As EventHandler(Of MouseOverEventArgs) ' delegate un peu spécial, il a la meme signature que les autres, mais prend en plus un paramètre par référence Public Delegate Sub ExempleEventHandler(ByVal sender As Object, ByVal e As EventArgs) 'on ecrit le controle en surchargeant le render Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) writer.Write("Survoler l'heure pour la mettre à jour <br /> <span ") writer.WriteAttribute("id", Me.UniqueID) writer.WriteAttribute("onmouseover", _ Me.Page.ClientScript.GetCallbackEventReference(Me, _ "this.innerHTML", "__onCallBackTermine", "'" & Me.UniqueID & "'")) writer.Write(">") writer.Write(Now.ToLongTimeString) writer.Write("</span>") MyBase.Render(writer) End Sub ' function appelé quand la souris passe sur notre lien ' c'est ici qu'on declenche notre evenement Public Function RaiseCallbackEvent(ByVal eventArgument As String) As String Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent Dim e As New MouseOverEventArgs(eventArgument) RaiseEvent MouseOver(Me, e) Return e.NouvelleHeure End Function ' Ici on ecrit la fonction qui sera appellé au retour du callback Private Sub ControlExemple_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init If Not Me.Page.ClientScript.IsClientScriptBlockRegistered("callback") Then Dim script As New StringBuilder script.AppendLine("function __onCallBackTermine(result, context)") script.AppendLine("{") script.AppendLine("document.getElementById(context).innerHTML = result;") script.AppendLine("}") Me.Page.ClientScript.RegisterClientScriptBlock(GetType(ControlExemple), "callback", script.ToString, True) End If End Sub End Class Public Class MouseOverEventArgs Inherits EventArgs Private _nouvelleHeure As String Public Property NouvelleHeure() As String Get Return _nouvelleHeure End Get Set(ByVal value As String) _nouvelleHeure = value End Set End Property Private _AncienneHeure As String Public ReadOnly Property AncienneHeure() As String Get Return _AncienneHeure End Get End Property Public Sub New(ByVal ancienneheure As String) _AncienneHeure = ancienneheure End Sub End Class ' La page Partial Class Default3 Inherits System.Web.UI.Page ' cet evenement est declenché coté serveur quand le client passe la souris sur l'heure, attention ' la page n'est pas renvoyé, c'est juste l'argument result qui est renvoyé par javascript Protected Sub ControlExemple1_MouseOver(ByVal sender As Object, ByVal e As System.EventArgs) Handles ControlExemple1.MouseOver e.NouvelleHeure = Now.ToLongTimeString End Sub End Class
Je ne suis pas très familier avec la nouvelle syntaxe vb. surtout les delegates sont difficiles a traduire...
Merci
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.