Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB 2005] - Intercettazione evento di un ActiveX personalizzato

    Ciao a tutti,
    ho un problema legato all'intercettazione di un evento, ho preparato un activeX composto da un pulsante e da una textbox. Ogni volta che si agisce su questo pulsante, viene incrementata di 1 una proprietà "val" propria del controllo ed il suo valore viene riportato nella textbox del controllo (chiamata txtOCX), e fin qui nessun problema.
    A questo punto ho inserito il controllo su un form, contraddistinto da un'altra textbox (chiamata txtFORM) ed anch'esso da una proprietà numerica "val".
    Quello che vorrei fare è questo:
    quando agisco sul pulsante del controllo, la variabile numerica del form viene impostata pari a quella appena incrementata del controllo, e di conseguenza visualizzata sulla txtFORM. Tuttavia non riesco a capire come vanno gestiti gli eventi, perchè questo aggiornamento viene fatto soltanto al momento dell'evento Validated del controllo, e non ad ogni evento Click del pulsante del controllo.
    Facendo un pò di debug ho visto che si genera l'evento "Enter" appena clicco la prima volta sul controllo, ma il form vede sempre lo stesso evento mentre io agisco sul controllo. La validazione di quest'ultimo, cioè, avviene solo quando esco dal controllo stesso.
    Per maggior chiarezza riporto di seguito il codice del controllo e del form, ho preparato anche l'esempio zippato, ma è di dimensioni troppo grandi, posso mandarlo in pm a chi avesse tempo e voglia di darci un'occhiata.
    Ciao a tutti e grazie

    ------------------------------------------------------------------------------
    CODICE DELL'ACTIVEX PERSONALIZZATO
    ------------------------------------------------------------------------------
    Public Class ocx
    Private cval As Integer = 0

    Public Property val() As Integer
    Get
    Return cval
    End Get
    Set(ByVal value As Integer)
    cval = value
    End Set
    End Property

    Public Sub btnTASTO_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
    Handles btnTASTO.Click
    val += 1
    txtOCX.Text = val
    End Sub


    Public Sub New()

    ' Chiamata richiesta da Progettazione Windows Form.
    InitializeComponent()

    ' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
    btnTASTO.Text = "Incrementa"
    txtOCX.Text = val
    End Sub
    End Class

    ------------------------------------------------------------------------------
    CODICE DEL FORM
    ------------------------------------------------------------------------------
    Public Class Form
    Private cval As Integer = 0

    Public Property val() As Integer
    Get
    Return cval
    End Get
    Set(ByVal value As Integer)
    cval = value
    txtFORM.Text = value
    End Set
    End Property

    Private Sub btnESCI_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnESCI.Click
    Call Me.Close()
    End Sub

    Private Sub Ocx_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs) _
    Handles Ocx.Click, Ocx.Validated
    val = Ocx.val
    End Sub


    Private Sub Ocx_Validating(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) _
    Handles Ocx.Validating
    val = Ocx.val
    End Sub


    Private Sub Form_Validated(ByVal sender As Object, _
    ByVal e As System.EventArgs) _
    Handles Me.Validated, Ocx.Validated
    val = Ocx.val
    End Sub
    End Class

  2. #2
    perchè crei un delegato dell' evento Validated??
    Non devi trappare quando fai click del pulsante ???
    Allora va che devi rilasciare nella tua classe un evento click ognivolta che premi il pulsante e nella form trappare il delegato di quell' evento ...

  3. #3
    Ciao, ho creato un delegato dell'evento validated perchè le ho provate un pò tutte, a dire il vero.
    Scusa, ma non capisco bene che cosa vuoi dire con "trappare quando fai click del pulsante". Quello che ho cercato di fare è intercettare l'evento click sul controllo (ocx_click) ed all'interno di questo impostare la proprietà locale a quella del controllo stesso. Tuttavia il programma passa attraverso questo evento soltanto quando clicco su un'altra parte del form, e quindi a seguito dell'evento validated del controllo.
    Spero di essermi spiegato meglio.
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.