4

いくつかの値を持つ HashSet があることを確認してください。この値には、たとえば414123456742412345674261234567などの数値を含めることができます。RadioButton1 を UserControl に配置しました。これをクリックすると、414 と 424 の数字だけが ListBox に残ります。そのために、次のコードを書きました。

private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        var bdHashSet = new HashSet<string>(bd);

        if (openFileDialog1.FileName.ToString() != "")
        {
            foreach (var item in bdHashSet)
            {
                if (item.Substring(1, 3) != "414" || item.Substring(1, 3) != "424")
                {
                    listBox1.Items.Remove(item);
                }
            }
        }
    }

しかし、コードを実行すると、次のエラーが発生します。

DataSource プロパティが設定されている場合、Items コレクションは変更できません。

不要なアイテムを HashSet から削除せずにリストから削除する適切な方法は何ですか? 後で、0416 と 0426 で始まる番号の optionButton と、listBox を元の値で埋めるための optionButton を追加します。何かアドバイスはありますか?

4

5 に答える 5

3

試す

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
    var bdHashSet = new HashSet<string>(bd);

    listBox1.Datasource = null;
    listBox1.Datasource =  bdHashSet.Where(s => (s.StartsWith("414") || s.StartsWith("424"))).ToList();
}
于 2013-04-16T03:21:32.873 に答える
0

オブジェクトを使用できBindingSourceます。それを DataSource にバインドしてから、RemoveAt()メソッドを使用します。

于 2013-12-04T13:18:45.903 に答える