【发布时间】:2011-07-13 15:43:01
【问题描述】:
现在我有 3 个带有文本的 RichTextBox。我从这些框中获取此文本并拆分每一行并将每一行添加到其相应的 ListBox。这是我的代码:
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();
}
在上面的代码之后,每个 ListBox 都在不同的行中包含指定的数据。但是,我想要做的是添加按钮按钮,当单击时将选定的列表项移动到指定的 ListBox。
列表框的视觉布局:
placementOneListBox userDefinedListBox placementTwoListBox
| | | | | |
| | | | | |
| | | | | |
| | | | | |
|_________________| |_________________| |_________________|
所以,我想做的是有一个按钮,上面写着“向右移动”或“向左移动”,它将当前选定的项目(最好是 items 用于多选)并将其移动到左侧或右侧 ListBox。但是,对于placementOneListBox,“向左移动”按钮将不起作用,对于placementTwoListBox,“向右移动”按钮将不起作用。我在下面尝试了这种方式(没有用):
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));
}
我也尝试过这种方式(也没有奏效):
private void placementOneMoveRightButton_Click(object sender, EventArgs e)
{
string str;
str = placementOneListBox.SelectedItems.ToString();
placementOneListBox.Items.Remove(placementOneListBox.SelectedItems);
userDefinedListBox.Items.Add(str);
}
他们不工作的原因:
每当我运行程序并单击“向右移动”按钮(对于上述任一代码案例)时,我都会收到以下错误:
"Items collection cannot be modified when the DataSource property is set."
问题
- 有谁知道我在这方面做错了什么?
- 谁能展示/解释“DataSource 属性”发生了什么以及如何解决它?
【问题讨论】:
-
哪个 UI 框架?赢表格?网络表单? WPF?银光? XNA?电话?
-
我正在做这个表格。不是网络表单
-
您没有回答问题,但由于您使用的是“表单”一词,我将假设您的意思是 WinForms,并在此问题中添加适当的标签。
-
对不起,我的意思是 WinForms。哎呀:/
-
这样做是 Visual Studio 2010