2017-10-23 1 views
-2

Ich habe eine Combobox in Winform. Es ist an ein Enum gebunden. Die Enumeration zeigt den Status des Artikels in einer Bestellung an. Ich möchte, dass Benutzer der Bestellung folgen und Benutzer davon abhalten, den vorherigen Status zu wählen, wenn sie aktualisiert werden. Ich habe das selectedIndexchanged-Ereignis versucht, aber es hat nicht funktioniert.schränken Benutzer von der Auswahl Wert auf vorherigen Index in Combobox C# Winform

public enum Articlestatus : Byte 
    { 
     Inplagiarism = 0, 
     Consentletter = 1, 
     Inreview = 2, 
     AuthorRevision = 4, 
     ReReview = 8, 
     Reject = 16, 
     Accept = 32, 
     Published = 64 
    } 
+0

Ja einige einige Details helfen. –

+1

Sie müssen zeigen, * was * nicht funktioniert, wenn Sie Hilfe bei der Fehlerbehebung benötigen. Bitte lesen [fragen] und nehmen Sie die [Tour] – Plutonix

+1

Mögliche Duplikat von [Erstellen Sie WinForms ComboBox mit nicht auswählbaren Elementen] (https://stackoverflow.com/questions/2290563/create-winforms-combobox-with-non-selectable- Artikel) –

Antwort

0

Eine Möglichkeit wäre es, zu verfolgen, das zuvor ausgewählte Element in einer Variablen zu tun, und dann, im SelectedIndexChanged Ereignisse, wählen Sie erneut das vorherige Element ir, wenn der Benutzer etwas wählen versucht weniger:

// Keep track of currently selected index 
private int lastSelectedIndex = 0; 

private void Form1_Load(object sender, EventArgs e) 
{ 
    comboBox1.DataSource = Enum.GetValues(typeof(Articlestatus)); 
    comboBox1.DropDownStyle = ComboBoxStyle.DropDownList; 

    // Select first item and update our tracking variable 
    comboBox1.SelectedIndex = 0; 
    lastSelectedIndex = comboBox1.SelectedIndex; 
} 

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    // Do nothing if they re-selected the same item 
    if (comboBox1.SelectedIndex == lastSelectedIndex) return; 

    // If the newly selected item is less than the previous one, reset to previous one 
    if (comboBox1.SelectedIndex < lastSelectedIndex) 
    { 
     comboBox1.SelectedIndex = lastSelectedIndex; 
    } 
    else 
    { 
     lastSelectedIndex = comboBox1.SelectedIndex; 
    } 
} 

Beachten Sie, dass dieser Code für den Benutzer nicht sehr flexibel ist. Wenn sie versehentlich den falschen Gegenstand wählen, stecken sie fest. Ich stelle mir vor, dass der Code zum Aktualisieren der lastSelectedIndex woanders hingehen sollte, wie in einem "TaskCompleted" -Ereignis, das, wenn es ausgelöst wird, bedeutet, dass sie etwas getan haben, das sie zur Auswahl verpflichtet.

+0

das ist das Problem. Im Grunde genommen behalte ich Werte aus der Gridview auf dem cellclick -Ereignis und einige Artikel haben standardmäßig vorhergehende Werte. Ansonsten funktioniert es. –

Verwandte Themen