Jump to content
Sign in to follow this  
bomnacama

Apagar elemento de listview e ArrayList

Recommended Posts

bomnacama

Boas a todos.

Ando de volta de um projecto de C# e tenho a seguinte duvida: estou a mostrar o conteudo de uma ArrayList (listaAnimais) numa listview, e, ao usar a ToolStrip, queria eliminar objecto seleccionado. Para eliminar da lista é fácil, mas estou a ter dificuldades em apagar o registo seleccionado da ArrayList.

Deixo o meu agradecimento a quem me poder ajudar  :)


        private void eliminarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                foreach (Animal reg in listaAnimais)
                {
                    listView1.Items.Remove(listView1.SelectedItems[0]);
                    listaAnimais.Remove(reg);

                }
            }
            catch { }
        }



Share this post


Link to post
Share on other sites
f-22

Boas, vê se ajuda. adapta p ti. fiz este exemplo agora

            if (.SelectedItems.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    if (((MyClass)list[i]).id == Convert.ToInt64(listView1.SelectedItems[0].Text))
                        list.Remove(listView1.SelectedItems[0]);
                }
            }

Share this post


Link to post
Share on other sites
bomnacama

Tentei adaptar o código que me enviaste mas mesmo assim não funciona. Não sei se estarei a fazer algo de mal ou se não dá mesmo desta maneira.


                if (listView1.SelectedItems.Count > 0)
                {
                    for (int i = 0; i < listaAnimais.Count; i++)
                    {
                        if (((Animal)listaAnimais[i]).NumRegisto == Convert.ToInt64(listView1.SelectedItems[0].Text))
                            listaAnimais.Remove(listView1.SelectedItems[0]);
                        listView1.Items.Remove(listView1.SelectedItems[0]);
                    }
                }


Share this post


Link to post
Share on other sites
f-22

Tentei adaptar o código que me enviaste mas mesmo assim não funciona. Não sei se estarei a fazer algo de mal ou se não dá mesmo desta maneira.


                if (listView1.SelectedItems.Count > 0)
                {
                    for (int i = 0; i < listaAnimais.Count; i++)
                    {
                        if (((Animal)listaAnimais[i]).NumRegisto == Convert.ToInt64(listView1.SelectedItems[0].Text))
                            listaAnimais.Remove(listView1.SelectedItems[0]);
                        listView1.Items.Remove(listView1.SelectedItems[0]);
                    }
                }


Estás a remover 2 vezes? Esse IF dendtro do FOR é só para percorrer a arrayList e quando o item tiver o mesmo valor que o que está apagado, remove.

Qual é o erro? Já fizeste Debug?

Share this post


Link to post
Share on other sites
bomnacama

A linha de código que adicione é só para apagar da listview também.

O erro que dá é o seguinte:  InvalidArgument=Valor de '0' inválido para 'index'. Nome de parâmetro:index

Share this post


Link to post
Share on other sites
f-22

Pois é não reparei. mas isso teria que ser executado ao mesmo tempo que a outra. mete as 2 linhas de codigo dentro de

if

{

// codigo

}

se não fizeres isso ele apaga-te da listview a cada iteração

Share this post


Link to post
Share on other sites
bomnacama

Já consegui corrigir o problema :confused:


                if (listView1.SelectedItems.Count > 0)
                {
                    for (int i = 0; i < listaAnimais.Count; i++)
                    {
                        if (((Animal)listaAnimais[i]).NumRegisto == Convert.ToInt64(listView1.SelectedItems[0].Text))
                        {                       
                            listaAnimais.RemoveAt(i);
                            listView1.Items.Remove(listView1.SelectedItems[0]);
                        }
                    }
                }

O meu problema agora é outro ehehe.

Obrigado pela ajuda :P

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.