C # - переместить TextBox в ListBox и иметь возможность использовать кнопки «Добавить / Удалить» - PullRequest
0 голосов
/ 20 июля 2011

У меня есть 3 текстовых поля, в которых есть определенные значения.Значения разделяются в зависимости от того, что содержат строки с использованием различных регулярных выражений.

Эти текстовые поля находятся в фоновом режиме, и пользователь их не увидит. Однако я делаю хочу, чтобы пользовательсм. списки, которые соответствуют каждому текстовому полю. Вот код ниже:

    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();
    }

ОДНАКО , моя проблема с этимэто то, что я не могу переместить каждый элемент в списке ... Я имею в виду, что я хочу иметь кнопки Move up, Move down, Move left и Move right.Кнопки Move up и Move down позволяют пользователю перемещать выбранные элементы вверх или вниз (для изменения порядка элементов) в указанном списке.Кнопки Move left и Move right позволяют пользователю перемещать элемент в текущем списке в список «вправо» или «влево» текущего списка.

Визуальный макет списков:

placementOneListBox                userDefinedListBox                placementTwoListBox
|                 |                |                 |               |                 |
|                 |                |                 |               |                 |
|                 |                |                 |               |                 |
|                 |                |                 |               |                 |
|_________________|                |_________________|               |_________________|

и Я получаю ошибка :

"Items collection cannot be modified when the DataSource property is set."

Кнопка перемещения вверх КОД:

    private void moveUpButton_Click(object sender, EventArgs e)
    {
        if (placementOneListBox.SelectedIndex != 0 && placementOneListBox.SelectedIndex != -1)
        {
            object item = placementOneListBox.SelectedItem;
            int index = placementOneListBox.SelectedIndex;
            placementOneListBox.Items.RemoveAt(index);
            placementOneListBox.Items.Insert(index - 1, item);
        }
    }

Кнопка перемещения вправоКОД:

    private void moveRightButton_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < placementTwoListBox.Items.Count; i++)
        {
            userDefinedListBox.Items.Add(placementTwoListBox.Items[i].ToString());
            placementTwoListBox.Items.Remove(placementTwoListBox.SelectedItem);
        }
    }

ВОПРОСЫ:

  • Есть ли способ пойти оэто где я могу изменить свойство DataSource?
  • Кто-нибудь хочет попробовать это?
  • Как я могу изменить мою функцию listFormatHelper (), чтобы сделать то, что мне нужно, и разрешитькнопки для работы без ошибок выше?

1 Ответ

2 голосов
/ 20 июля 2011

У вас есть два варианта:

  1. Не использовать привязку данных; преобразовать источник данных в последовательность объектов и заполнить список (ы), добавив объекты в последовательности в свойство Items Затем управляйте заказом, используя свойство Items, как вы в настоящее время пытаетесь сделать.
  2. Измените сам источник данных, чтобы изменить порядок. Как это сделать, зависит от того, какой источник данных вы используете.
...