obsługa listView

0

Witam!

Mam problem. Mam listView a w nim 2 elementy: "el1" i "el2". Deklaruje obsługę zdarzenia:

this.listView1.ItemSelectionChanged += new System.Windows.Forms.ListViewItemSelectionChangedEventHandler(SSelectedIndexChange);

a następnie pisze kod obsługi:

void SSelectedIndexChange(object sender, System.Windows.Forms.ListViewItemSelectionChangedEventArgs e)
{
this.textBox1.text="jakis tekst";
}

Sedno problemu jest takie,że po kliknięciu "el1" wyświetla mi "jakis tekst" - i to jest dobrze, ale jak klikne na "el2" to wyświetla mi podwójnie "jakis tekst". Od tego momentu program wyswietla mi podwójnie "jakis tekst" obojetnie czy kliknę na "el1" czy na "el2".

Jak zrobić by "jakis tekst" pojawiał się tylko raz za każdym kliknięciem?

Chcę nadmiecić, że robiłem próby z tak zadeklawowaną obsługą zdarzenia "this.listView1.SelectedIndexChanged += new EventHandler(SSelectedIndexChange);" ale rezultat był ten sam.

Bardzo proszę o pomoc bo coraz bardziej ten problem staje się dokuczliwy. Pozdrawiam.

0

sprobuj tak:

void SSelectedIndexChange(object sender, System.Windows.Forms.ListViewItemSelectionChangedEventArgs e)
{
this.textBox1.Clear();
this.textBox1.text="jakis tekst";
}

0

Dzięki kamail. To faktycznie rozwiązuje problem taki jak podałem na forum ale nie rozwiązuje innej rzeczy o którą mi chodzi.

Przedstawię problem jeszcze inaczej. Załóżmy,że mamy taką obsługę i zadeklarowaną zmienną
"public int zmienna=0;":

public void SSelectedIndexChange(object sender, System.Windows.Forms.ListViewItemSelectionChangedEventArgs e)
{
this.zmienna++;
MessageBox.Show("Ilość wejść: "+this.zmienna.ToString());
}

Ten MessageBox bedzie pojawiał się dwa razy za każdym kliknięciem. Także na początku wyświetli "Ilość wyświetleń: 1" a za kolejnym kliknięciem: "Ilość wyświetleń: 2" i "Ilość wyświetleń: 3" i tak już zostaje, za każdym razem funkcja jest dwa razy obsługiwana. Jak zrobić by wywoływana była tylko raz?

Pozdrawiam.

0

private bool zmianaZmiennej = false;

public void SSelectedIndexChange(object sender, System.Windows.Forms.ListViewItemSelectionChangedEventArgs e)
{
if (zmianaZmiennej){
zmianaZmiennej = false;
return
}

    zmianaZmiennej = true;
    this.zmienna++;
    MessageBox.Show("Ilość wejść: "+this.zmienna.ToString());

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1