c# -移动文本框到列表框,并能够使用添加/删除按钮

本文关键字:添加 能够使 按钮 删除 移动 文本 列表 | 更新日期: 2023-09-27 18:03:00

我有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 leftMove right按钮。Move upMove down按钮将允许用户在指定的列表中向上或向下移动所选项目(以改变项目的顺序)。Move leftMove right按钮将允许用户将当前列表中的项移动到当前列表的"右"或"左"列表。

可视化布局的实现:

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

误差:

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

向上移动按钮CODE:

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

问题:

  • 有一种方法去这个我可以修改数据源属性?
  • 有人想试试这个吗?
  • 我怎么能改变我的listFormatHelper()函数做我需要它做什么,并允许按钮工作没有上面的错误?

c# -移动文本框到列表框,并能够使用添加/删除按钮

您有两个选择:

  1. 不要使用数据绑定;将数据源转换为对象序列,并通过将序列中的对象添加到Items属性来填充列表。然后使用Items属性管理订单,就像您当前尝试做的那样。
  2. 修改数据源本身以更改顺序。如何做到这一点取决于您使用的数据源。