Cstom Button, bloccare un evento in esecuzione

giovedì 07 gennaio 2010 - 15.27

boggio Profilo | Newbie

Ciao a tutti,
vi espongo un nuovo problema:

1) Creo un nuovo pulsante che estende la classe Button:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Come descritto all'interno del commento nella Sub TeButton_Click, vorrei che in quel caso non venisse eseguito il codice presente nell'evento nella Form di test:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Chiaro il problema? spero possiate aiutarmi.. non ho mai ricevuto risposta in questo forum eppure sembrerebbe essere il Forum per eccellenza per gli sviluppatori Vb.Net in italia..

Grazie
Mirko

aiedail92 Profilo | Expert

Ciao

Non devi intercettare l'evento della classe che estendi, non ha senso... Devi piuttosto eseguire l'override del metodo OnClick, quindi richiamare l'OnClick della classe base se vuoi che l'evento venga generato, altrimenti non lo chiami e l'evento non si scatenerà:

Protected Overrides Sub OnClick(ByVal e As System.EventArgs) If Authorization Then If CheckAuthorization() Then MyBase.OnClick(e) Else ' not authorized ' VORREI CHE IN QUESTO CASO NON VENISSE ESEGUITO ' IL CODICE DELL'EVENTO ONCLICK GENERATO NEL ' FORM IN CUI IL CONTROLLO E' UTILIZZATO ' Do nothing End If Else ' Do nothing End If End Sub

Tengo comunque a farti notare che non è buona cosa mischiare la logica di programmazione con la grafica, e soprattutto non ha senso mettere delle proprietà pubbliche per consentire o negare l'accesso in base a dei privilegi, se poi sono impostabili. È come salvare una password e poi lasciare che chiunque la possa leggere e modificare...

Comunque, questo è solo il tuo secondo messaggio, non è un po' troppo presto per dire che non hai mai trovato risposte sul forum?

Saluti

Luca

boggio Profilo | Newbie

Ciao Luca e come prima cosa: grazie mille!In effetti con questo account ho fatto solo due post e ti chiedo scusa!
ho provato il codice che mi hai postato e funziona alla perfezione! A dire il vero avevo provato a fare l'Overrides dell'onclick, ma semplicemente antecedendo "Overrides" alla funzione che avevo usato prima.. :-(

Perchè dici che è insicuro?cioè io volevo fare in modo che la proprietà fosse editabile direttamente dall'editor grafico.. significa che qualcuno potrebbe prendere possesso dell'istanza del pulsante e cambiare a runtime il valore? probabilmente per l'applicazione "home made" che devo fare io il problema non si pone, però mi interessa il discorso.. te come faresti (così mi aggancio all'altro post) magari , come dicevi te, senza mescolare logica e grafica?

Non sono esperto (come avrai ben capito) ma mi piacerebbe molto arrivare ad un buon livello con il .net!ho la necessità di entrare un po' più in profondità nella "filosofia" della programmazione ad oggetti, soprattutto per quanto riguarda la reale progettazione di una applicazione nel suo intero. Ho cercato in rete se ci fossero libri che potessero darmi una visione completa di tutto ciò per avere idea di come suddividere una applicazione nelle sue varie parti per poi orchestrarle tutte assieme.. ma penso che l'unico aiuto possa arrivarmi dall'esperienza di persone che hanno già la soluzione!non è un discorso di pigrizia,davvero, ma con i tempi che ci sono oggi preferirei approfondire una filosofia reale, esistente e valida, piuttosto che "perdere" giorni e rimanere ancora più indietro.. poi magari sbaglio eh! :-) hai qualche testo da consigliarmi? o pensi che prendere un programma già esistente (con sorgenti distribuiti) e "studiarlo" sia la soluzione migliore?

Non ti chiedo di rispondere a tutti questi quesiti eh, però qualche consiglio lo prendo volentieri!
Grazie ancora
Mirko

aiedail92 Profilo | Expert

>Ciao Luca e come prima cosa: grazie mille!In effetti con questo
>account ho fatto solo due post e ti chiedo scusa!

Figurati, era solo per dire di non scoraggiarti subito se le risposte non sono immediate...

>Perchè dici che è insicuro?cioè io volevo fare in modo che la
>proprietà fosse editabile direttamente dall'editor grafico..
>significa che qualcuno potrebbe prendere possesso dell'istanza
>del pulsante e cambiare a runtime il valore?

Diciamo che in generale fare applicazioni con .net (ma è lo stesso con praticamente tutti i linguaggi interpretati/semicompilati) dove la sicurezza è un fattore primario, o dove si vogliono mettere blocchi/limitazioni/protezioni, non è una scelta ottimale. Se non ti munisci di un buon offuscatore, è come rilasciare i sorgenti assieme all'applicazione.

Per quanto riguarda le proprietà Authorization\AuthorizationLevel, quello che intendevo è che dovrebbero essere ReadOnly, e per impostarle dovresti fornire un'ipotetica funzione Authenticate che esegua l'autenticazione ed imposti il livello di autorizzazione, ma nel tuo caso è solo un problema di "pulizia".

>probabilmente per l'applicazione "home made"
>che devo fare io il problema non si pone

In questo caso non stare nemmeno a preoccuparti troppo, il problema è se devi fare un'applicazione da rilasciare a terzi, o con abbonamenti e simili. In queste situazioni, security through obscurity, quindi generalmente o niente .net (ma anche linguaggi più a basso livello non sono immuni ad un buon reverser) o un buon offuscatore.

>hai qualche testo da consigliarmi?

Di libri buoni senz'altro ce ne sono, ma purtroppo per VB.Net non ho niente da consigliarti...

>Grazie ancora
>Mirko

Di niente, ciao

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5