Как удалить элемент из списка с установленным источником данных, используя строку в C # - PullRequest
2 голосов
/ 24 сентября 2011

ссылка на ссылка MSDN

как я могу удалить элемент, используя строку ???(Я не хочу удалять его, используя выбранный индекс)
Я хочу что-то вроде

USStates.Remove("Alabama","AL");

Ответы [ 3 ]

1 голос
/ 24 сентября 2011

Вы не можете изменить Items коллекцию, но вы можете изменить источник данных (List или ArrayList).

Прежде всего переопределить методы GetHashCode() и Equals() в типе USState.

public override int GetHashCode()
{
     return myLongName.GetHashCode() + myShortName.GetHashCode();
} 
public override bool Equals(object obj)
{
     return GetHashCode() == obj.GetHashCode();
} 

Теперь вы можете удалить элемент,

 listBox1.DataSource = null; // Set null so you can update DataSource
 USStates.Remove(new USState("Wisconsin", "WI"));
 listBox1.DataSource = USStates;
 listBox1.DisplayMember = "LongName";
 listBox1.ValueMember = "ShortName"; 
0 голосов
/ 24 сентября 2011

Обновлено: я предполагаю, что вы добавляете кнопку, которую можно нажать, чтобы удалить элемент.

    BindingList<USState> USStates;
    public Form1()
    {
        InitializeComponent();

        USStates = new BindingList<USState>();
        USStates.Add(new USState("Alabama", "AL"));
        USStates.Add(new USState("Washington", "WA"));
        USStates.Add(new USState("West Virginia", "WV"));
        USStates.Add(new USState("Wisconsin", "WI"));
        USStates.Add(new USState("Wyoming", "WY"));

        listBox1.DataSource = USStates;
        listBox1.DisplayMember = "LongName";
        listBox1.ValueMember = "ShortName";
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var removeStates = (from state in USStates
                            where state.ShortName == "AL"
                            select state).ToList();
        removeStates.ForEach( state => USStates.Remove(state) );
    }

PS: я думал, что вы используете WPF в моем предыдущем ответе.

0 голосов
/ 24 сентября 2011

Прежде всего, не используйте ArrayList, используйте List.Затем вы можете удалить в зависимости от типа T,

    list.Remove("whatever"); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...