C# MessageBox czyści zmienną

Witam

Posiadam ListView w której są zapisywane pewne dane (które następnie zapisywane są do bazy danych) chcę usunąć jeden wpis - dzięki czemu utworzyłem odpowiednią funkcję i umieściłem poniższy kod:

if (listView1.SelectedItems.Count == 1)

            {

                ListView.SelectedListViewItemCollection items = listView1.SelectedItems;


                if (items != null && items[0].SubItems[0].Text != "")

                {

                    dane = items[0].SubItems[0].Text;

                    if (MessageBox.Show("Czy na pewno chcesz usunąć wpis '" + dane + "'", "Uwaga!", MessageBoxButtons.YesNo) == DialogResult.Yes)

                    {                

                        cmd.CommandText = "DELETE FROM Elementy WHERE Dane ='"+dane+"'";

                        cmd.ExecuteNonQuery();

                        listView1.Items.Clear();

                        OdswierzenieWpisow();

                    }

                }

            }

MessageBox wyświetla wszystko poprawnie, ale “dane” już przy cmd.CommandText ma wartość “null”. Wszystko jest ok jeśli tego messageboxa nie wsadzę, ale z nim nie działa.

Stworzyłem zmienną “dane2” która przyjmuje w tym samym momencie to samo co “dane” - gdy “cmd” jest uzależnione od “dane2” - wszystko działa… Czemu “dane” jest czyszczone?

Czy masz może jakiś dodatkowy wątek, który używa tą zmienną.

Nie wskazałeś gdzie ta zmienna została zadeklarowana.

Tak jest używana.

Jest to jedna zmienna globalna deklarowana na samym początku programu dla wszystkich funkcji. Jednak zostało zadbane tak by, żadna funkcja nie nakładała się na siebie i działało wszystko ok, do momentu włączenia MessageBox - a

Dodaj do formatki TextEdit i dodawaj do niego wiersz z nazwą funkcji w każdym miejscu gdzie zmienna dane się zmienia.

Natychmiast zobaczysz gdzie to się zmienia.

Nadużycie zmiennych globalnych często jest karane takimi problemami.

W tym miejscu nie ma żadnego powodu aby użyć zmiennej globalnej zamiast lokalnej.

Masz rację… będę musiał przeglądnąć program w poszukaniu takich kwiatków i ograniczenia czegoś takiego. Cóż… problem jest rozwiązany.