I have listbox
with some items in it, what I'm looking for this:
always previous items keep selected and if i click an item that isn't selected it get selected too but if it's already selected it get's unselected. I used these code but it doesn't work very well! here's my code(this one does not work at all):
public partial class Options_Form : Form
{
public Options_Form()
{
InitializeComponent();
}
private void Options_Load(object sender, EventArgs e)
{
AceMP_Class cl = new AceMP_Class();
listBox1.Items.AddRange(cl.SupportedFiles_stringarray());
listBox1.SelectionMode = SelectionMode.MultiExtended;
listBox1.Size = listBox1.PreferredSize;
listboxitemsState_array = new bool[cl.SupportedFiles_stringarray().Length];
}
private void button2_Click(object sender, EventArgs e)
{
listBox1.ClearSelected();
//selecteditemsindex_list.Clear();
}
//List<int> selecteditemsindex_list = new List<int>();
bool[] listboxitemsState_array;
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
for (int i = 0; i < listboxitemsState_array.Length; i++)
{
if (listboxitemsState_array[i])
{
listBox1.SetSelected(i, true);
}
else
{
listBox1.SetSelected(i, false);
}
}
//if (listBox1.GetSelected(listBox1.IndexFromPoint(e.X, e.Y)))
if (listboxitemsState_array[listBox1.IndexFromPoint(e.X, e.Y)])
{
listBox1.SetSelected(listBox1.IndexFromPoint(e.X, e.Y), false);
listboxitemsState_array[listBox1.IndexFromPoint(e.X, e.Y)] = false;
}
else
{
listBox1.SetSelected(listBox1.IndexFromPoint(e.X, e.Y), true);
listboxitemsState_array[listBox1.IndexFromPoint(e.X, e.Y)] = true;
}
}
private void listBox1_MouseUp(object sender, MouseEventArgs e)
{
for (int i = 0; i < listboxitemsState_array.Length; i++)
{
if (listboxitemsState_array[i])
{
listBox1.SetSelected(i, true);
}
else
{
listBox1.SetSelected(i, false);
}
}
//if (listBox1.GetSelected(listBox1.IndexFromPoint(e.X, e.Y)))
if (listboxitemsState_array[listBox1.IndexFromPoint(e.X, e.Y)])
{
listBox1.SetSelected(listBox1.IndexFromPoint(e.X, e.Y), false);
listboxitemsState_array[listBox1.IndexFromPoint(e.X, e.Y)] = false;
}
else
{
listBox1.SetSelected(listBox1.IndexFromPoint(e.X, e.Y), true);
listboxitemsState_array[listBox1.IndexFromPoint(e.X, e.Y)] = true;
}
}
}
but this one works but not very well!
public partial class Options_Form : Form
{
public Options_Form()
{
InitializeComponent();
}
private void Options_Load(object sender, EventArgs e)
{
AceMP_Class cl = new AceMP_Class();
listBox1.Items.AddRange(cl.SupportedFiles_stringarray());
listBox1.SelectionMode = SelectionMode.MultiExtended;
listBox1.Size = listBox1.PreferredSize;
}
private void button2_Click(object sender, EventArgs e)
{
listBox1.ClearSelected();
selecteditemsindex_list.Clear();
}
List<int> selecteditemsindex_list = new List<int>();
private void listBox1_Click(object sender, EventArgs e)
{
listBox1.ClearSelected();
}
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
for (int i = 0; i < selecteditemsindex_list.Count; i++)
{
listBox1.SetSelected(selecteditemsindex_list[i], true);
}
}
private void listBox1_MouseUp(object sender, MouseEventArgs e)
{
for (int i = 0; i < selecteditemsindex_list.Count; i++)
{
listBox1.SetSelected(selecteditemsindex_list[i], true);
}
if (listBox1.GetSelected(listBox1.IndexFromPoint(e.X, e.Y)))
{
listBox1.SetSelected(listBox1.IndexFromPoint(e.X, e.Y), false);
}
else
{
listBox1.SetSelected(listBox1.IndexFromPoint(e.X, e.Y), true);
selecteditemsindex_list.Add(listBox1.IndexFromPoint(e.X, e.Y));
}
}
}
How can I solve that!?