studiati il blocco try catch, di permette di andare avanti qualsiasi errore avvenga anche se non ti interessa sapere quale
studiati il blocco try catch, di permette di andare avanti qualsiasi errore avvenga anche se non ti interessa sapere quale
Ricky ... mi sembra che tu stia complicando una cosa semplice ...
Se vuoi usare l'evento MouseDown della ListBox (come facevi in VB6) puoi anche farlo in VB.NET.
Cioè ...
codice:Private Sub ListBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseDown Dim NomeAgente As String = ListBox1.Items(ListBox1.SelectedIndex).ToString.Trim MessageBox.Show(NomeAgente) End Sub
Ultima modifica di oregon; 18-03-2018 a 21:07
No MP tecnici (non rispondo nemmeno!), usa il forum.
Molte grazie, Oregon.
Ho provato ad utilizzare la tua soluzione, però comunque qualcosa non funziona come vorrei. Cerco di spiegarmi meglio e poi magari tu rifarai la stressa prova, probabilmente per cazziarmi.
Sono partito da una ListBox con 5 Items, tutti selezionati già in avvio; ho fatto click sul primo, lo ha deselezionato e mi ha dato come risposta il nome del secondo, e così via. Quando sono arrivato all'ultimo ha dato errore (proprio perchè non c'era più nessun Item selezionato, credo).
Allora sono partito dalla stessa ListBox, ma con tutti gli Item già deselezionati in avvio. Ho cliccato sul primo Item: lo ha selezionato e mi ha dato il nome corretto. Ho cliccato sul secondo, lo ha selezionato ma mi ha dato il nome del primo; click sul terzo e sempre nome del primo. Idem quando ho cliccato sugli item appena selezionati: li deseleziona ma mi da sempre il nome del primo. Poi arrivato all'ultimo da errore.
Il funzionamento a me pare piuttosto ambiguo; ci sono anche altre varianti a seconda che l'Item sia selezionato o no e se ci sono già altri Item selezionati o no.
Aspetto che tu confermi o smentisca il mio test (in questo caso spero mi dirai dove sbaglio).
Ciao.
Indipendentemente dall'errore, se non ottengo il nome contenuto nell'Item o almeno la posizione dell'Item, la procedura è inutile. Quando da l'errore ovviamente non esegue la procedura e non mi restituisce quello che sto cercando.
Indipendentemente dalla gestione dell'errore che suggerisci, se la procedura non mi restituisce il valore che cerco, allora non mi serve. Ed evidentemente se anche posso far continuare la procedura, se c'è un errore il valore restituito o non c'è o può anche essere sbagliato.
Quindi ti serve solamente
codice:Private Sub ListBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseDown Dim ix As Integer = ListBox1.IndexFromPoint(e.Location) If ix >= 0 Then Dim NomeAgente As String = ListBox1.Items(ix).ToString.Trim MessageBox.Show(NomeAgente) End If End Sub
No MP tecnici (non rispondo nemmeno!), usa il forum.
Sicuramente è La Soluzione; come vedi sono io che non la sapevo trovare.
Ho imparato adesso che esistono modi per utilizzare la (per me misteriosa) "e As MouseEventArgs". Dovrò documentarmi meglio.
Grazie Oregon. Ti terrò al corrente dell'utilizzo della tua soluzione.
Ancora grazie, Oregon, funziona perfettamente. Ora devo implementare tutta la procedura e spero di non incontrare altre difficoltà.
Per cortesia, puoi indicarmi dove trovare le informazioni di base su "e As MouseEventArgs" e simili?
Ciao.
basta cercare in rete, allego un esempio significativo
codice:Public Class Form1 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load AddHandler Me.MouseDown, AddressOf MouseDownHandling End Sub Private Sub MouseDownHandling(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Dim cname As String = DirectCast(sender, Control).Name MessageBox.Show("Controllo " + cname + " - pulsante " + e.Button.ToString + " premuto") End Sub End Class