Im Moment habe ich 3 RichTextBox(es) mit Text in ihnen. Ich nehme diesen Text aus diesen Boxen und teile jede Zeile auf und füge jede einzelne Zeile zu der entsprechenden ListBox hinzu. Hier ist mein Code für das:
private void listFormatHelper()
{
// Splits the lines in the rich text boxes
var listOneLines = placementOneRichTextBox.Text.Split('\n');
var listTwoLines = placementTwoRichTextBox.Text.Split('\n');
var listUserLines = userDefinedRichTextBox.Text.Split('\n');
// Resest the text in the listboxes
placementOneListBox.ResetText();
placementTwoListBox.ResetText();
userDefinedListBox.ResetText();
// Set the selection mode to multiple and extended.
placementOneListBox.SelectionMode = SelectionMode.MultiExtended;
placementTwoListBox.SelectionMode = SelectionMode.MultiExtended;
userDefinedListBox.SelectionMode = SelectionMode.MultiExtended;
// Shutdown the painting of the ListBox as items are added.
placementOneListBox.BeginUpdate();
placementTwoListBox.BeginUpdate();
userDefinedListBox.BeginUpdate();
// Display the items in the listbox.
placementOneListBox.DataSource = listOneLines;
placementTwoListBox.DataSource = listTwoLines;
userDefinedListBox.DataSource = listUserLines;
// Allow the ListBox to repaint and display the new items.
placementOneListBox.EndUpdate();
placementTwoListBox.EndUpdate();
userDefinedListBox.EndUpdate();
}
Nach dem obigen Code enthält jede ListBox die angegebenen Daten in separaten Zeilen. Ich möchte jedoch Schaltflächen hinzufügen, die beim Anklicken das ausgewählte Listenelement in die angegebene ListBox verschieben.
VISUELLES LAYOUT VON LISTBOXEN:
placementOneListBox userDefinedListBox placementTwoListBox
| | | | | |
| | | | | |
| | | | | |
| | | | | |
|_________________| |_________________| |_________________|
Also, was ich zu tun versuche, ist eine Schaltfläche, die sagt "nach rechts bewegen" oder "nach links bewegen" und es nimmt das aktuell ausgewählte Element (vorzugsweise Artikel für Multiselektion) und verschiebt sie entweder zur linken oder zur rechten ListBox. Für die PlatzierungOneListBox funktioniert die Schaltfläche "move left" jedoch nicht und für die PlatzierungTwoListBox funktioniert die Schaltfläche "move right" nicht. Ich habe es auf die folgende Weise versucht (was nicht funktionierte):
private void placementOneMoveRightButton_Click(object sender, EventArgs e)
{
var currentItemText = placementOneListBox.SelectedValue.ToString();
var currentItemIndex = placementOneListBox.SelectedIndex;
userDefinedListBox.Items.Add(currentItemText);
placementOneListBox.Items.Remove(currentItemIndex);
placementOneListBox.Items.RemoveAt(placementOneListBox.Items.IndexOf(placementOneListBox.SelectedItem));
}
Ich habe es auch auf diese Weise versucht (was auch nicht funktioniert hat):
private void placementOneMoveRightButton_Click(object sender, EventArgs e)
{
string str;
str = placementOneListBox.SelectedItems.ToString();
placementOneListBox.Items.Remove(placementOneListBox.SelectedItems);
userDefinedListBox.Items.Add(str);
}
DER GRUND, WARUM SIE NICHT FUNKTIONIEREN :
Immer wenn ich das Programm ausführe und auf die Schaltfläche "nach rechts verschieben" klicke (für beide obigen Code-Fälle), erhalte ich die folgende Fehlermeldung:
"Items collection cannot be modified when the DataSource property is set."
FRAGEN
- Weiß jemand, was ich in diesem Fall falsch mache?
- Kann jemand zeigen/erläutern, was mit der "DataSource-Eigenschaft" geschieht und wie ich es umgehen kann?