lundi 23 février 2015

Is it wrong to set ListBox DataSource property to null in order to change list Items?

I found that Items.Clear does not always clear a listbox when the listbox has been filled via a DataSource. Setting the DataSource to Null allows it to be cleared with Items.Clear().


Is this the wrong way to do it this way? Is my thinking a bit wrong to do this?


Thanks.


Below is the code I prepared to illustrate my problem. It includes one Listbox and three buttons.


If you click the buttons in this order everything Everything works:



  1. Fill List With Array button

  2. Fill List Items With Array button

  3. Fill List Items With DataSource button


But if you click the "Fill List Items With DataSource" button first, clicking on either of the other two buttons causes this error: "An unhandled exception of type 'System.ArgumentException' occurred in System.Windows.Forms.dll" with "Items collection cannot be modified when the DataSource property is set."


Comments?



public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnFillListWithArray_Click(object sender, EventArgs e)
{
string[] myList = new string[4];

myList[0] = "One";
myList[1] = "Two";
myList[2] = "Three";
myList[3] = "Four";
//listBox1.DataSource = null; <= required to clear list
listBox1.Items.Clear();
listBox1.Items.AddRange(myList);
}

private void btnFillListItemsWithList_Click(object sender, EventArgs e)
{
List<string> LStrings = new List<string> { "Lorem", "ipsum", "dolor", "sit" };
//listBox1.DataSource = null; <= required to clear list
listBox1.Items.Clear();
listBox1.Items.AddRange(LStrings.ToArray());

}

private void btnFillListItemsWithDataSource_Click(object sender, EventArgs e)
{
List<string> LWords = new List<string> { "Alpha", "Beta", "Gamma", "Delta" };
//listBox1.DataSource = null; <= required to clear list
listBox1.Items.Clear();
listBox1.DataSource = LWords;

}
}

Aucun commentaire:

Enregistrer un commentaire