Sintassi vb.net

mercoledì 31 maggio 2006 - 12.53

FELIX NET Profilo | Newbie

Ciao a tutti...

Da bravo programmatore VB6....sto' tentando di aggiornarmi a vb.net.

Avrei bisogno di qualche dritta...

1) Se da un form (form1) devo scrivere su di una textbox di un' altro form (form2) in VB6 facevo: Form2.Textbox.Text= " " (semplice e pulito)....in vb.net pero' non funziona!!!!!

2) Utilizzando una barra degli strumenti come posso recuperare l'index del pulsante che e' stato premuto?????

In VB6 facevo:

Private Sub bar_ButtonClick(ByVal Button As MSComCtlLib.Button)

Select Case Button.Key
Case "azione1"

Case "azione2

End Select
Exit Sub

Ma in VB.net?????

Grazie a tutti....

Cteniza Profilo | Guru

Se posso fare una considerazione iniziale: se fai dei paragoni su come "facevi" su vb6 sei sulla cattiva strada per imparare vb.net la miglior cosa è affrontare vb.net come un nuovo (e lo è) linguaggio.
1)
Questo è possibile solo configurando tutte le proprie forms come shared e single instance (se mi posso permettere una vera porcheria).
Eventualmente analizza quali sono i dati da passare e fai una classe di interscambio tra forms (questa si shared) dove tu possa leggere e scrivere da qualsiasi punto.

2)
Per quella cosa lì puoi usare il tag presente nel bottone.
Esempio
Private Sub addRecordButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles addRecordButton.Click$
Dim myButton As Button = Ctype(sender,Button)
Dim myString As String = Ctype(myButton.Tag,String)
End Sub

alextyx Profilo | Expert

Per la tua prima domanda, ti consiglio di dare un'occhiata a questi due link. Penso possano chiarirti un po' le idee su come funzionano le cose in VB.Net:

http://forum.masterdrive.it/showthread.php?t=12459

http://forum.masterdrive.it/showthread.php?t=11130

Poni attenzione al fatto che il nome della istanza non è quello della form progettata. Potrebbe anche esserlo, ma può crearti problemi. In VB2005 hanno riavvicinato le cose a VB6, per certi versi, ma ti consiglio di imparare e mantenere l'approccio di VB.Net2003.

FELIX NET Profilo | Newbie

Ho letto i link che mi hai suggerito....

Ti dico come ho proceduto....

1) creo un modulo e dichiaro l' istanza:

public frm as new form1


2) Creo il modulo che lavorera' con la textbox della form:

public sub azione()

frm.textbox1.text=" "

end sub

3) Richiamero' il modulo dal codice contenuto in form1:

nome_modulo.azione


Risultato: nessun errore ma effetti zero.....perche'

alextyx Profilo | Expert

Guarda che non è necessario che tu metta la procedura in un modulo. Devi poter 'vedere' la textbox, ed agire su di essa, anche direttamente dalla form dalla quale richiami la procedura contenuta nel modulo. Quello che mi lascia perplesso è che tu mi dici che richiami quella procedura dal codice contenuto in 'form1'.....chi è questa form1? Non è la classe dalla quale ottieni l'istanza frm? Mi sarei aspettato che tu richiamassi la procedura dalla form 'vattelapesca' e, ovviamente, l'azione sarà sulla textbo1 dell'istanza frm, che non ha nulla a che vedere con form1 se non il fatto che è stata ottenuta a sua 'immagine e somiglianza' (e con questa citazione religiosa iniziamo a programmare in un vago odore di santità!). Credo di capire che il tuo progetto parta dalla form1 e che tu stia osservando quella form. Se la form della quale intendi raggiungere il controllo textbox, è la tua form di partenza (speravo fosse una seconda form), allora bisogna fare un passo in avanti. Innanzitutto devi cambiare, dalle proprietà del progetto, l'oggetto di partenza da 'Form1' a 'Sub Main'.
Poi, nel tuo modulo dovrai scrivere una cosa del genere:


Module Module1

Public Frm As New Form1

Public Sub Main()

Application.Run(Frm)

End Sub


End Module

In questo modo, alla partenza, verrà eseguita la sub main, che avvierà l'applicazione (Application.Run), legandola al destino della form 'frm', chiudendo la quale si chiuderà l'applicazione stessa. Lo stesso comando serve anche a rendere visibile la form 'frm' esattamente come se tu scrivessi frm.show

In questa situazione, la prima form effettivamente visibile, sarà l'istanza 'frm' e non 'Form1' e quindi l'esecuzione del comando frm.textbox1.text="", darà un risultato finalmente visibile!
Spero di essere stato chiaro. Fammi sapere.

FELIX NET Profilo | Newbie

Tutto ok funziona.....

Solo una curiosita':

Questo di cui mi sono accupato e' soltanto una semplice soluzione di prova, per "avvicinamento" al vb.net....

La mia domanda e' la procedura che mi hai descritto mi permette di gestire in maniera simile anche form MDI....cioe' se dai vari form child ho necessita' di richiamare moduli esterni che intereagiscono con lo stesso form chiamante avrei difficolta...?

Grazie e scusa se approfitto esageratamente

alextyx Profilo | Expert

Ciò che dichiari pubblico nel modulo è visibile da tutta la tua applicazione e quindi non dovresti avere difficoltà neppure dalle form MDI....salvo errore, ma non credo proprio di sbagliare. Ciao.

Cteniza Profilo | Guru

Secondo me potresti anche continuare a fare domande per una settimana senza avere risultati significativi.
La gestione degli oggetti di vb.net è completamente diversa da quella presente su vb6.
Il miglior consiglio che ti si può dare è di affrontare la migrazione con la sola certezza, vb.net è un nuovo linguaggio di programmazione che è necessario studiare.
Quando smetterai di fare paragoni con vb6 e quindi a considerarlo come "bagaglio acquisito" da applicare nel nuovo sarai nella condizione giusta per imparare a lavorare con vb.net.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5