Ok so versuche ich Elemente von einem listbox zum anderen zu bewegen durch die Verwendung mehrerer Tasten dhDeaktivieren Tasten Problem auf C#
Ich habe 2 Tasten cmdRight und cmdRight2, die sowohl auf Last Form deaktiviert sind
Wenn Der Benutzer wählt ein einzelnes Element in der ersten Listbox aus. Eine cmdRIGht-Schaltfläche aktiviert, aber cmdRight2 ist weiterhin deaktiviert. Wenn der Benutzer mehrere Elemente in der ersten Listbox auswählt, wird eine CmdRight2-Schaltfläche aktiviert, aber cmdRight wird deaktiviert.
Ich habe die Move - Tasten zu arbeiten, aber das Problem, das ich habe, ist nach dem Verschieben mehrerer Elemente mit der CmdRight2 - Taste die Schaltfläche aktiviert cmdRight (was sollte es sollte nur nach der Auswahl eines einzigen Elements in der Listbox). Ich habe zahlreiche if-Statements etc. ausprobiert und trotzdem passiert es immer noch.
Ich bin neu in C#, so würde jede Hilfe geschätzt werden.
Danke
private void lbList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.lbList1.SelectedItems != null)
{
cmdRight.Enabled = true; //enable cmdRight
cmdClear.Enabled = true; //enable cmdClear
if (this.lbList1.SelectedItems.Count > 1)//if multiple items selected
{
cmdRight.Enabled = false;
cmdRight2.Enabled = true; //enable cmdRight2
}
}
}
private void cmdRight2_Click(object sender, EventArgs e)
{
foreach (int i in lbList1.SelectedIndices)
{
lbList2.Items.Add(lbList1.Items[i].ToString());
}
while (lbList1.SelectedItems.Count > 0)
{
lbList1.Items.Remove(lbList1.SelectedItems[0]);
}
cmdRight2.Enabled = false;
}
private void cmdRight_Click(object sender, EventArgs e)
{
lbList2.Items.Add(lbList1.SelectedItem); //Add selected item from list1 to list2
lbList1.Items.Remove(lbList1.SelectedItem);//remove the selected item in list1
cmdRight.Enabled = false; //disable cmdRight
}
Haben Sie Haltepunkte setzen bei der Anfang jeder Funktion, um die Reihenfolge zu sehen, in der sie aufgerufen werden? Oder zumindest ein Haltepunkt jedes Mal, wenn cmdRight.Enabled auf true gesetzt ist. – taylonr
Dies ist keine Antwort auf Ihre Frage, aber warum kombinieren Sie nicht einfach die beiden Schaltflächen (indem Sie einfach cmdRight entfernen und cmdRight2 beibehalten)? Offensichtlich kenne ich Ihr Design nicht, aber es würde wahrscheinlich Ihr Problem lösen. –
Ich habe versucht, die Haltepunkte und aus irgendeinem Grund die if-Anweisung "if (this.lbList1.SelectedItems! = Null)" scheint immer wahr zu sein. Auch wenn nichts ausgewählt ist. –