2009-06-01 5 views
0

Ich habe ein Listenfeld mit Artikeln wie A B C D E.
Ich habe auch zwei Tasten Move UP und Verschieben Sie mit ihm.
Ich habe ihre Eigenschaften bereits im Eigenschaftsfenster (F4) falsch gemacht.Wie finde ich eine bestimmte Position eines ausgewählten Elements in Listbox, wodurch die Buttons in C# aktiviert werden?

Wenn ein Benutzer B oder alle unten aufgeführten Elemente auswählt, sollte meine Schaltfläche Move Up aktiviert werden. Es sollte für A-Punkt

deaktiviert werden Auf die gleiche Weise sollte meine Schaltfläche nach unten aktiviert werden, wenn der Benutzer D oder alle Elemente darüber wählt. Es sollte für E. deaktiviert werden.

Können Sie mir bitte den richtigen Teil des Codes, der hier geschrieben werden soll.

Danke ....

Antwort

0

Ich mache eine ähnliche Sache in meiner App. Es behandelt auch die Auswahl mehrerer Elemente und prüft auch, ob die mehreren ausgewählten Elemente fortlaufend sind oder nicht.

Hier ist der Code:

private bool SelectionIsContiguous(ListBox lb) 
{ 
    for (int i = 0; i < lb.SelectedIndices.Count - 1; i++) 
     if (lb.SelectedIndices[i] < lb.SelectedIndices[i + 1] - 1) 
      return false; 

    return true; 
} 

private void SetMoveButtonStates() 
{ 
    if (this.listBox.SelectedIndices.Count > 0) 
    { 
     if (this.listBox.SelectedIndices.Count > 1 && !SelectionIsContiguous(this.listBox)) 
     { 
      this.btnMoveUp.Enabled = false; 
      this.btnMoveDown.Enabled = false; 
      return; 
     } 

     int firstSelectedIndex = this.listBox.SelectedIndices[0]; 
     this.btnMoveUp.Enabled = firstSelectedIndex == 0 ? false : true; 

     int lastIndex = this.listBox.Items.Count - 1; 
     int lastSelectedIndex = this.listBox.SelectedIndices[this.listBox.SelectedIndices.Count - 1]; 
     this.btnMoveDown.Enabled = lastSelectedIndex == lastIndex ? false : true; 
    } 
} 
+0

Hallo Rashmi, Danke für die Antwort eine weitere Sache, die ich fragen wollte. Ich möchte eine Datei aus meiner Listbox auswählen. Beispiel: Eine A, die oben angegeben ist. Ich möchte meine Schaltfläche dafür aktivieren Ich habe dies geschrieben if (m_lbOPFfiles.SelectedIndex == 0) { m_BtnValidateInput.Enabled = true; } jetzt auf die Auswahl A nur meine Schaltfläche ist aktiviert, während ich auf die Auswahl einer der Dateien wie B C D E shud aktiviert werden soll. Ich habe den obigen Teil in SelectIndex Changed Clik Event geschrieben. Kannst du Wats falsch helfen ?? –

+0

Wenn ich Ihr Problem richtig verstehe, dann müssen Sie dies tun: ..... if (m_lbOPFfiles.SelectedIndex> = 0) {m_BtnValidateInput.Enabled = true; } .... hoffe, das hilft :) –

+0

Danke, hat es funktioniert ... Grüße Shweta .. –

0

das SelectedIndexChanged-Ereignis des ListBox Griff. Wenn der SelectedIndex größer als 0 ist, aktivieren Sie "move up". Wenn es weniger ist als count - 1, aktivieren Sie „nach unten“

0

Hier ist der Code, das ich in listBox_SelectedIndexChanged verwenden:

this.moveUp.Enabled = this.listBox.SelectedIndex > 0; 
this.moveDown.Enabled = this.listBox.SelectedIndex > -1 && listBox.SelectedIndex < listBox.Items.Count - 1; 

Eigentlich ist es in einem Verfahren von dort als der Code genannt genannt wird, wenn der Dialog ist zu initialisiert .