Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

vb.net eseguire codice all'apertura del form

101 views
Skip to first unread message

Dal Monte

unread,
Feb 25, 2011, 11:50:13 AM2/25/11
to
Salve a tutti,
avrei la necessitą di eseguire una sub se passo dei parametri
all'applicazione, altrimenti attendo l'input dall'utente e la pressione di
un button:

ho catto cosi':
form_load:
For Each s As String In My.Application.CommandLineArgs
txtTesto.Text = s
Next

form_paint:
if txtTesto.Text<>"" then elabora()

il problema ora č che se gli passo un parametro funziona bene, ma se non
glielo passo, ogni volta che ridisegna il form mi esegue Elabora() e io
invece vorrei che se non li sono stati passati paramentri attendesse la
pressione del button...
come potrei fare?

Grazie 1000
D.

Marcello Cantelmo

unread,
Feb 25, 2011, 12:42:02 PM2/25/11
to
> Salve a tutti,

ciao,

> avrei la necessit di eseguire una sub se passo dei parametri


> all'applicazione, altrimenti attendo l'input dall'utente e la pressione di
> un button:

perchè passi da form_load e form_paint? forse mi sfugge qualcosa...

io farei partire l'applicazione da una sub Main anzichè da una normale
form

Friend Shared Sub Main(ByVal args As String())
End Sub

a questo punto si analizzano i parametri passati via cmdline. quelli
necessari, poi, vengono passati tramite costruttori alla form e
memorizzati tramite field...se devi continuare ad utilizzarli

Marcello Cantelmo
www.cantelmosoftware.com

Dal Monte

unread,
Mar 1, 2011, 2:37:37 AM3/1/11
to

"Marcello Cantelmo" <in...@cantelmosoftware.com> ha scritto nel messaggio
news:8020d76b-1ed5-4fb1...@q14g2000vbf.googlegroups.com...


>> Salve a tutti,
>
> ciao,
>
>> avrei la necessit di eseguire una sub se passo dei parametri
>> all'applicazione, altrimenti attendo l'input dall'utente e la pressione
>> di
>> un button:
>

> perchč passi da form_load e form_paint? forse mi sfugge qualcosa...
>
> io farei partire l'applicazione da una sub Main anzichč da una normale


> form
>
> Friend Shared Sub Main(ByVal args As String())
> End Sub
>
> a questo punto si analizzano i parametri passati via cmdline. quelli
> necessari, poi, vengono passati tramite costruttori alla form e
> memorizzati tramite field...se devi continuare ad utilizzarli

Ciao Marcello,
mi piace il tuo suggerimento, come faccio dalla main a passare i parametri
ad un textbox e fare il controllo che in caso non sia ="" eseguire una sub?
Se inserisco un controllo di questo tipo nel form_load per gestire i
parametri:

if text1.text<>"" then Elabora()

ho paura che il form non venga visualizzato correttamente...

grazie 1000
>
> Marcello Cantelmo
> www.cantelmosoftware.com

Wodka40[Google]

unread,
Mar 1, 2011, 5:44:19 AM3/1/11
to
On 1 Mar, 08:37, "Dal Monte" <pr...@prova.pr> wrote:
> "Marcello Cantelmo" <i...@cantelmosoftware.com> ha scritto nel messaggionews:8020d76b-1ed5-4fb1...@q14g2000vbf.googlegroups.com...
zac
Una form è una classe
come tale ci puoi inserire un campo pubblico...
o MEGLIO una property da valorizzare/leggere

rispondendo ad un altro partecipante nel post
"CHIUSURA APPLICAZIONE NON RIESCE"
ho proprio fatto una app di esempio che prende dei parametri dalla
linea di comando e li stampa sulla form
studiala ha gran parte di quello che ti serve
https://groups.google.com/group/it.comp.lang.visual-basic/browse_frm/thread/91ccd77aa50c11d5?hl=it#

Dal Monte

unread,
Mar 1, 2011, 8:57:58 AM3/1/11
to

"Wodka40[Google]" <virgult...@latinmail.com> ha scritto nel messaggio
news:accf152c-14ca-4e5a...@v31g2000vbs.googlegroups.com...


> On 1 Mar, 08:37, "Dal Monte" <pr...@prova.pr> wrote:
>> "Marcello Cantelmo" <i...@cantelmosoftware.com> ha scritto nel
>> messaggionews:8020d76b-1ed5-4fb1...@q14g2000vbf.googlegroups.com...
> zac

> Una form č una classe


> come tale ci puoi inserire un campo pubblico...
> o MEGLIO una property da valorizzare/leggere
>

[cut]

sono a buon punto... praticamente ho cambiato il tipo progetto in consolle e
l'ho fatto partire dal sub main (come Applicazione windows form non era
possibile farla partire dalla sub main).

Nella Class Form1 ho inserito:
public variabile as string

che dal sub main dopo aver instanziato la classe form1 riesco a valorizzare

L'unica cosa che non mi piace, č che cosi' facendo quando avvio
l'applicazione si apre la finestra nera del prompt di ms-dos... che credo
sia normale visto che č un'applicazione consolle... ma ora la domanda č:
come faccio a far partire il progetto da una sub main senza che mi
visualizzi la finestra nera del prompt di ms-dos?

grazie 1000

Wodka40[Google]

unread,
Mar 1, 2011, 9:16:21 AM3/1/11
to
sigh...perchè uno si danna per aiutarvi e poi manco fate la fatica di
leggere????

ti incollo qui la procedura passo passo per avere una applicazione che
leggge la riga di comando e la stampa sullo sfondo di una
form.....devi solo cambiare questa ultima cosa....invece di stampare
sullo sfondo fa qualcos'altro!

.........
ed allora mi son preso vs 2010 e butatto giu una mini app sega
passi...
progetto winform...ho lasciato il nome...mi ha proposto
WindowsApllication1
sono andato in proprietà del progetto ed al pannello "applicazione"
ho
cliccato su visualizza eventi applicazione
mi ha creato ApplicationEvents.vb...lasciamolo stare per ora!
Il codice della form1
Public Class Form1
Private _qualcosa As String = ""
Public WriteOnly Property Titolo
Set(ByVal value)
_qualcosa = value
End Set
End Property
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim t As Graphics = Me.CreateGraphics
t.DrawString(_qualcosa, New Font("ARIAL", 12),
Brushes.DarkRed, New PointF(x:=100, y:=100))
End Sub
End Class
la form ha una proprieta writeonly che impostata stampa una stringa
dentro la form....nulla di che!
Ora riprendi applicationEvents.vb e incolla
Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As
Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles
Me.Startup
'L'array che conterrà i paramteri
Dim MyStartupArguments() As String
'Un contatore
Dim intCount As Integer
'Carico l'array
MyStartupArguments =
System.Environment.GetCommandLineArgs
'Qui cicla sui parametri che trova....QUI devi scrivere un
parser che fa quello che vuoi! e richiama quel che vuoi! Io gli passo
solo un parametro!
For intCount = 0 To UBound(MyStartupArguments)
Form1.Titolo =
(MyStartupArguments(intCount).ToString)
Next
End Sub
è grezzissima ma in buona sostanza non fa che leggere da riga di
comando dei parametri e passarli alla famosa proprietà di sopra....
Basta compila!
Adesso abbiamo una applicazione che lanceremo richiamando l'exe e
passandogli dei parametri da linea di comando....!

Andrea [Work]

unread,
Mar 1, 2011, 10:41:42 AM3/1/11
to
Il Tue, 1 Mar 2011 14:57:58 +0100, Dal Monte ha scritto:

> sono a buon punto... praticamente ho cambiato il tipo progetto in consolle e
> l'ho fatto partire dal sub main (come Applicazione windows form non era
> possibile farla partire dalla sub main).
>
> Nella Class Form1 ho inserito:
> public variabile as string

Non ho letto tutto, ma se vuoi far fare una cosa all'apertura di una form
in alcuni casi ti basta fare l'overload del New
Es
| Public Class Form1
| Private autoClose as Boolean = False
|
| Public Sub New()
| Me.New(Nothing, Nothing, False)
| End Sub
|
| Public Sub New(ByVal o1 As Classe1, ByVal o2 As Classe2, ByVal autoClose As Boolean)
| ' This call is required by the designer.
| InitializeComponent()
|
| ' Add any initialization after the InitializeComponent() call.
|
| Me.autoClose=autoClose
| CaricaDati()
|
|
| End Sub
| End Class

Questo è il concetto poi con i parametri che passi puoi far eseguire anche
i metodi al Load usando una variabile privata di flag.

Marcello Cantelmo

unread,
Mar 2, 2011, 4:33:19 AM3/2/11
to
> Ciao Marcello,

ciao e grazie per l'interesse

> mi piace il tuo suggerimento, come faccio dalla main a passare i parametri
> ad un textbox e fare il controllo che in caso non sia ="" eseguire una sub?
> Se inserisco un controllo di questo tipo nel form_load per gestire i
> parametri:
>
> if text1.text<>"" then Elabora()
>
> ho paura che il form non venga visualizzato correttamente...
>
> grazie 1000

piccolo esempio che gestisce il passaggio dei parametri in questo
modo:

/c = utilizza solo console ...oppure
/w = utilizza solo winforms

/f = un tuo file e/o parametro

quindi :

tuoprogramma /w /f:tuofile.txt

il codice lo trovi a questo indirizzo:

http://www.cantelmosoftware.com/download/startfromconsole.zip (73
kb...src code in vb.net 2008 express edition)

nell'esempio:
- non si usa il namespace "My" ...in modo da poter essere riutilizzato
anche in c#
- si usa una sola classe per l'avvio sia in console-mode che window-
mode
- inizialmente parte in console-mode (start quindi da Sub Main) e
quando si decide di switchare in GUI viene chiusa automaticamente la
finestra console sfruttando la tecnica (freeconsole) che ti ho
segnalato nell'altro thread (http://groups.google.com/group/
it.comp.lang.visual-basic/browse_thread/thread/ad9a2a2cf67ac08c#)
- non si segnalano problemi nella "chiusura applicazione"

insomma giusto un'idea, poi valuta e/o modifica secondo le tue
esigenze ;-)

Marcello Cantelmo
www.cantelmosoftware.com

0 new messages