Jump to content

ListView e ComboBox - Dúvidas


saramgsilva

Recommended Posts

Boas,

estou com dúvidas no uso de ComboBox e ListView

Eu tenho uma form, com uma listview e uma combobox, o code da form é  (em anexo tenho a execução do programa)


public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            AddComboBox();
            AddListView();
        }

        public void AddComboBox()
        {
            comboBox1.Items.Add("Teste1");
            comboBox1.Items.Add("Teste2");

        }

        public void AddListView()
        {
            listView1.Columns.Add("name", 100, HorizontalAlignment.Left);
            listView1.Columns.Add("notes", 100, HorizontalAlignment.Left);

            ListViewItem item = new ListViewItem();
            item.Text = "Sara";
            item.SubItems.Add("teste");

            listView1.Items.Add(item);

            ListViewItem item1 = new ListViewItem();
            item1.Text = "Manocas";
            item1.SubItems.Add("ipod");

            listView1.Items.Add(item1);
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox comboBox = (ComboBox)sender;

            string item = (string)comboBox.SelectedItem;


            switch(item)
            {
                case "Teste1":
                    Form newForm1 = new Form();
                    newForm1.Text = "Teste1";
                    newForm1.Show();
                    break;
                case "Teste2":
                    Form newForm2 = new Form();
                    newForm2.Text = "Teste2";
                    newForm2.Show();
                    break;

            }
        }
    }

o método   

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

está-me a dar voltas à cabeça, não consigo perceber muito bem o que os argumentos levam...

Eu quando selecciono uma opção da ComboBox, pretendo ir apanhar o que seleccionou,

que penso que aqui :

 string item = (string)comboBox.SelectedItem;

estou a fazer isso...Mas eu ainda  queria saber que linha da listView eu seleccionei, e apanhar o objecto dessa linha.

Neste caso, estou depois a criar uma Form nova, porque eu vou ter que criar algo parecido....mas isto é um teste para eu apanhar o valor seleccionado da Combobox, da listView....  ?  :wallbash:

bom trabalho

tofas

Link to comment
Share on other sites

Bem, a ListView também têm esse evento da comboBox "SelectedIndexChanged", portanto também o podes usar.

Depois para ir buscar o item que seleccionaste tens a propriedade SelectedItems. Só que ao contrário da comboBox não te devolve um elemento, mas sim uma colecção de elementos (em concreto vários ListViewItems), já que na ListView tens a possibilidade de ter mais do que 1 item seleccionado.

"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Link to comment
Share on other sites

boas,

algo do género:

ComboBox comboBox = (ComboBox)sender;
            
            string itemComboBoxSelected = (string) comboBox.SelectedItem;
      
            int position = IndexItem(itemComboBoxSelected);

            string text = fvListView.SelectedItems[0].SubItems[position-1].Name;
Link to comment
Share on other sites

boas,

bem eu acho que precisava do

string itemSelectComboBox = (string)combo.SelectedItem;

listView.SelectedItems;

? ainda estou analisar....

eu tenho k fazer 2 escolhas, uma na listview ( escolho uma linha ) e outra escolha na combobox, e depois tenho k ir ao objecto da linha seleccionada na listview buscar a collection que tem o nome dado pela escolha da combobox...  :dontgetit:

hummmm....

estou analisar...

bom trabalho e obrigada pela ajuda

tofas

Link to comment
Share on other sites

Boas,

é o seguinte, eu tenho uma form, que contem uma listview e uma comboBox.

As colunas da listview são o nome das variaveis do meu objecto principal, que contem collection's  de outros objectos. Os dados que aparecem na listview são das varias de tipos simples, quando a variavel é uma collection aparece o seu nome na combobox.

e quando estou a executar esta forma, eu depois vou seleccionar uma linha ( um objecto com um determinado id - unico! ) e vou seleccionar na comboBox a collection  que kero ver, sabendo k seleccionei uma linha da listview.

tenho o método:

private void comboBoxCollection_SelectedIndexChanged(object sender, System.EventArgs e)

       

depois faço :


ComboBox combo = (ComboBox)sender;
            
string objCollection= (string)combo.SelectedItem;
                      

para saber o que seleccionei na combobox

e depois

int id= int.Parse(fvListView.SelectedItems[0].Text)

para ir buscar o id do objecto que seleccionei na listview. ( a primeira coluna é o Id e é um interio )  🙂

já agora para uma datagridview, uso

int.Parse(fvGridView.SelectedRows[0].Cells["id"].Value.ToString())

Problema resolvido

bom trabalho

tofas

Link to comment
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
×
×
  • 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.