Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347

    [VB2005] Listbox: conflitto aggiunta item ed evento SelectedIndexChanged

    Salve a tutti.. ho un piccolo problema con la listbox e volevo un consiglio su come risolverlo..

    carico la listbox in questo modo:

    codice:
                With lstSchedaTecnica
                    .Sorted = True
                    .DataSource = DSVino.Dataset.Tables("SchedaTecnica")
                    .DisplayMember = "Denominazione"
                End With
    e quando vado a selezionare un elemento della lista deve caricare dei dati.. quindi vado a inserire questo codice all'interno dell'evento SelectedIndexChanged:

    codice:
            lblTemperatura.Text = cRow("Temperatura").ToString
    Il problema è che quando aggiungo gli elemti alla list box viene anche generato l'evento SelectedIndexChanged.. la prima soluzione che ho trovato è quella di mettere una variabile booleana che mi esagua l'evento SelectedIndexChanged solo quando ho finito di caricare la listbox...

    sapete consigliarmi un metodo più "furbo" e pulito?

    Grazie mille a tutti!

  2. #2
    SelectedItem ... ma anche quello una volta viene scatenato dopo il Binding, mi sembra logico. Ma a quel punto basta che controlli se la row è vuota o meno ...

  3. #3
    Originariamente inviato da raffaeu
    SelectedItem ... ma anche quello una volta viene scatenato dopo il Binding, mi sembra logico. Ma a quel punto basta che controlli se la row è vuota o meno ...
    Secondo me esiste un metodo più logico... togliergli l'evento, così non lo scatena nemmeno, e appena dopo il re-binding glielo riagganci.

    supponiamo che ad un bottone tu faccia aggiungere un oggetto alla lista:

    codice:
            private void button1_Click(object sender, EventArgs e)
            {
                listBox1.SelectedIndexChanged -= new EventHandler(listBox1_SelectedIndexChanged);
                lista.Add("ciao");
                listBox1.DataSource = null;
                listBox1.DataSource = lista;
                listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
            }
    Così non scatena proprio nulla. Ah, io ho usato una lista (List) come datasource, ovviamente tu devi usare il db.

    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  4. #4
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    grazie a mille a tutti e due!

    vorrei provare ad aggiungere e togliere un evento come dici tu chipdb.. visto che è la prima volta mi sai dire la sintassi corretta in visual basic e non in c# grazie!

  5. #5
    Originariamente inviato da Fado84
    grazie a mille a tutti e due!

    vorrei provare ad aggiungere e togliere un evento come dici tu chipdb.. visto che è la prima volta mi sai dire la sintassi corretta in visual basic e non in c# grazie!
    Scusami, ero convinto di aver letto VS2005, non VB2005. Ecco il codice per vb.net:

    codice:
    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
        RemoveHandler listBox1.SelectedIndexChanged, AddressOf listBox1_SelectedIndexChanged
        lista.Add("ciao")
        listBox1.DataSource = Nothing
        listBox1.DataSource = lista
        AddHandler listBox1.SelectedIndexChanged, AddressOf listBox1_SelectedIndexChanged
    End Sub
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

  6. #6
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    grazie mille! funziona alla perfezione ora!

  7. #7
    Originariamente inviato da Fado84
    grazie mille! funziona alla perfezione ora!
    prego figurati
    Cerco ombrello vecchio, nuovo, moderno o antidiluviano; purché protegga da una pioggia che vien giù come Dio la manda. Fate presto che ho l’acqua alla gola. (Noè)

    C# programming and other stuffs

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.