Comparsa di una messageBox

lunedì 20 ottobre 2008 - 15.52

RekLats Profilo | Newbie

ciao a tutti!

Dovrei scrivere un codice che mi permette di poter lanciare degli warning a video su controlli del form tipo textBox o anche su messageBox, una volta che siano state verificate delle condizioni su una classe che non sia il Main Form (ma che viene comunque istanziata nel Form).
Ad esempio: ho una classe che si chama Parser, che lavora su un file di testo, che ha una proprietà bool. Vorrei, una volta verificato che questa proprietà è FALSE (l'esecuzione "ce l'ha" Parser ora), poter far comparire sul Form un messaggio, o comunque "passargli" in qualche modo il controllo.

Come posso fare?
Grazie

gabriel81 Profilo | Junior Member

puoi spiegarti meglio???

RekLats Profilo | Newbie

Dovrei far apparire ad esempio una messagebox, chiamandola da una classe che non sia il form. Poiché i controlli del form sono proprietà unicamente del form, volevo sapere se c'è un modo per gestirli dall'esterno, ossia definendo la comparsa di una finestra di messaggio (es: un warning a video) oppure scrivere su una textbox (es: un warning scritto su una logbox), definendo questo in una classe esterna al form.

gabriel81 Profilo | Junior Member

Vediamo se ho capito:

tu hai una classe che esegue dei controlli su di un form, o meglio sui suoi controlli e vuoi che questa classe vada a controllare direttamente la classe istanziata, o meglio i suoi controlli....

questa classecome è collegata al form, ovvero come la implementi nel form?
Posta il codice, così vedo un po'

RekLats Profilo | Newbie

non proprio
Quando parlo di "controlli del form" mi riferisco agli oggetti che vengono inseriti dalla toolbox sul form: bottoni, textbox, datagrid, checkbox etc...
Forse quello che ho mancato di dire è che devo poter agire su questi oggetti del form dall'interno di un metodo che appartiene ad una classe qualsiasi.
Che tale classe sia poi istanziata all'interno del form non credo abbia poi tanta importanza.

Il codice è un pò troppo grosso, ma ti faccio un esempio banale: ho un metodo all'interno di una classe (Parser) che fa la somma di due numeri. Nel caso in cui il risultato sia > di 25 volessi farlo presente su una textbox o far comparire una messagebox che mi dice "hey attenzione il risultato è > 25" come potrei fare? Non voglio richiamare la messagebox dal form, ma vorrei poterlo fare dall'esterno, definendolo nel metodo che fa la somma all'interno della classe Parser.

gabriel81 Profilo | Junior Member

Ora finalmente ho capito.

Diciamo che è un tipo di approccio che non ho mai usato.
Spero di aiutarti con il tipo di approccio che uso io in genere

io istanzioi flussi di controllo dentro il form stesso.
Le classi vanno ad eseguire una ricerca per cast, basandosi sulla proprietà findform.
A dire il vero le mie classi sono veri e propri componenti.
Ho creato una MIA versione di textbox,combobox, datagridview ecc ecc
Questi componenti fanno già in automatico quello che voglio senza scrivere una riga di codice.

Se nella classe MioTextbox crei un metodo controllo() e gli metti l'handles Me.LostFocus, questo metodo parte ad ogni uscita dall'oggeto miotextbox1.
Spero di essermi spiegato....

RekLats Profilo | Newbie

Innanzitutto grazie per l'interessamento!!

Non si potrebbe gestire questo problema mediante eventi, delegati o roba simile? E se si come? Purtroppo ho diverse lacune in merito, ho provato a vedere qualcosa sull'argomento ma mi risulta un pò ostico... Non saprei nemmeno se sia questa la strada giusta!

gabriel81 Profilo | Junior Member

>Innanzitutto grazie per l'interessamento!!
>

Non ti preoccupare! Sai quanti aiuti ho ricevuto io qui???? E' il bello della comunity


>Non si potrebbe gestire questo problema mediante eventi, delegati
>o roba simile? E se si come? Purtroppo ho diverse lacune in merito,
>ho provato a vedere qualcosa sull'argomento ma mi risulta un
>pò ostico... Non saprei nemmeno se sia questa la strada giusta!

Guarda, io questo mondo l'ho sempre evitato.
Quindi non ti posso aiutare, per quanto riguarda l'approccio che usi tu.

Ora ti spiego il perchè ed il percome uso il mio approccio, ma voglio specificare che la mia non è assolutamente una critica al tuo approccio!

Siccome i programmi che creo sono più o meno sempre simili, ovvero gestione dati da Db, ho capito che la via + veloce è quella di esermi creato appunto i miei controlli personalizzati.
Pensa che bello avere a sinistra nella barra dei controlli, i tuoi personalizzati: ti basta trascinarli sul form e basta.
Funzionano esattamente come vuoi tu.

Ti faccio un esempio:
Prova ad immaginare un datagrid che abbia un metodo AggiornaDati(Byval Query as String)
Ti basta scrivere Me.MyDatagrid1.AggiornaDati("SELECT * FROM TABELLA") e la datagrid si popola.

Prova ad immaginare un combobox che abbia un metodo AggiornaDati(Byval Query as String)
Ti basta scrivere Me.MyCombobox1.AggiornaDati("SELECT * FROM TABELLA") e la combo si popola.

ecc... ecc... ecc...

Inoltre, credo che lavorare con un oggetto esterno al form che deve andare nel form aperto e andare a ciclare sui suoi controlli per fare dei controlli sia più pesante che la soluzione che uso io:
il controllo opera su se stesso e quindi il percosso che fa il thread è molto più corto.

Pensaci, ciao

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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5