ListBox不更新SelectedItems

时间:2016-04-11 10:21:14

标签: c# listbox

我正在为学校练习编写代码,我有以下代码:

private void button1_Click(object sender, EventArgs e)
{
    List<int> lista = new List<int>();
    int delivi = 0;
    int brojac = 0;

    listBox1.BeginUpdate();
    foreach (string s in listBox1.Items)
    {
        int broj = int.Parse(s);
        int delenje_so = int.Parse(textBox1.Text);

        if ((broj % delenje_so) == 0)
        {
            lista.Add(brojac);
            delivi++;
        }

        brojac++;
    }

    for (int i = 0; i < lista.Count; i++)
    {
        //listBox1.SetSelected(lista[i], true);
        MessageBox.Show(lista[i].ToString());
    }
    listBox1.EndUpdate();

    label1.Text = delivi.ToString();
}

基本上,我有ListBoxButtonTextBoxLabel。我在ListBox中有一些项目,我必须检查这些项目(ints)是否可以除以TextBox中的数字。然后选择ListBox中可以分割的所有项目,并输出可以在Label中划分的总数量。

除了ListBox不会选择分割的项目这一事实外,我的代码中的所有内容都有效。

我尝试在我执行检查的同一个foreach循环中进行更新,但是我收到错误,列表已被修改且无法继续。所以我做了不同的循环,但由于某种原因没有发生任何事情。

1 个答案:

答案 0 :(得分:0)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SOFAcrobatics
{
    public partial class Dividers : Form
    {
        public Dividers()
        {
            InitializeComponent();

            this.listBox1.SelectionMode = SelectionMode.MultiSimple;

            for (Int32 i = 1 ; i <= 30 ; i++)
            {
                this.listBox1.Items.Add(i);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Int32 n = Int32.Parse(this.textBox1.Text);

            List<Int32> indexes = new List<Int32> ();

            Int32 counter = 0;

            for (Int32 i = 0 ; i < this.listBox1.Items.Count ; i++)
            {
                if ((((Int32)this.listBox1.Items[i]) % n) == 0)
                {
                    indexes.Add(i);
                }
            }

            for (Int32 i = 0 ; i < indexes.Count ; i++)
            {
                this.listBox1.SetSelected(indexes[i], true);
            }

            this.label1.Text = (indexes.Count + 1).ToString();
        }
    }
}