Jump to content
diogoduran

Problema na leitura de dados de uma listbox

Recommended Posts

diogoduran

Boas..

Sempre que tento ler a informação de um Listbox ele da-me o seguinte erro : "Object reference not set to an instance of an object".

A criação da ListBox e a inserção dos dados é feita por C#.

Aqui fica o codigo

public partial class Inicial : Window

    {

        public ListBox ListaComp;

        public Inicial()

        {

            InitializeComponent();

            BasedeDados.ListadeComputadores Executa = new BasedeDados.ListadeComputadores();

            Executa.ListaPC();

            ListaComp = Executa.lista;

            ListaComp.SelectionChanged += ListaComp_SelectionChange;

            Conteudo.Children.Add(ListaComp);

        }

        private void ListaComp_SelectionChange(object sender , SelectionChangedEventArgs e)

        {

            try

            {

                if (ListaComp != null)

                {

                    ListBox lista = new ListBox();

                    lista = ListaComp;

                    ListBoxItem lst = lista.SelectedItem as ListBoxItem;

                    TextBlock list = new TextBlock();

                    list.text = (TextBlock)(lista.Content);      -> É aqui que me dá o erro.

                    MessageBox.Show(list.toString());

                }

            }

            catch (NullReferenceException f)

            {

                MessageBox.Show(f.Message);

            }

        }

Obrigado a Todos

Share this post


Link to post
Share on other sites
MSOlhao

Viva,

Estás-te a esquecer de instanciar a ListBox ListaComp.

public partial class Inicial : Window
    {
        public ListBox ListaComp; // Estás a declarar aqui

        public Inicial()
        {
            InitializeComponent();

            BasedeDados.ListadeComputadores Executa = new BasedeDados.ListadeComputadores();

            Executa.ListaPC();

            ListaComp = Executa.lista; // e a usar aqui, sem a instanciar primeiro.

            ListaComp.SelectionChanged += ListaComp_SelectionChange;

            Conteudo.Children.Add(ListaComp);
        }

Share this post


Link to post
Share on other sites
diogoduran

Boas

Obrigado pela resposta.

Mas a lista aparece no programa mas, quando selecciono um nome da lista, é quando me dá o erro.

Sem fazer isso que me dizes não devia de aparecer a informação na listbox pois não?

Cumprimentos

Share this post


Link to post
Share on other sites
MSOlhao

Viva,

O que é que esta prioridade te devolve?

ListaComp = Executa.lista;

Se poderes coloca aqui o código da classe ListadeComputadores, principalmente o método ListaPC() e a propriedade Lista, fica mais simples para reproduzir o erro aqui e dar-te a correcção.

Share this post


Link to post
Share on other sites
diogoduran

Este é o codigo da ListadeComputadores.

namespace Win32_OperatingSystem.BasedeDados

{

    class ListadeComputadores

    {

        public ListBox lista;

        public void ListaPC ()

        {

            ListBox list = new ListBox();

           

            SqlConnection sqlcon = new SqlConnection();

            sqlcon.ConnectionString = "ConnectionString";

           

            SqlCommand cmd = new SqlCommand();

            cmd.CommandText = "Select Compname , Ping FROM teste";

            cmd.Connection = sqlcon;

            Database1DataSet data = new Database1DataSet();

            data.CaseSensitive = true;

            SqlDataAdapter adptr = new SqlDataAdapter();

            adptr.SelectCommand = cmd;

            adptr.Fill(data);

            DataTable dt = data.Tables[0];

            foreach (DataRow row in dt.Rows)

            {

                if (row["Ping"].ToString() == "Succeed")

                {

                    TextBlock text = new TextBlock();

                    text.Text = "  " + row["Compname"].ToString();

                    insert.Children.Add(text);     

                }

                else

                {

               

                    TextBlock text = new TextBlock();

                    text.Text = "  " + row["Compname"].ToString();

                    insert.Children.Add(text);                       

                }

                list.HorizontalAlignment = HorizontalAlignment.Left;

                list.Width = 150;

                list.Height = 500;

                list.Margin = new Thickness(10, 10, 0, 0);

                lista = list;

                               

            }           

        }

    }

}

Este codigo devolve a listbox com todo o conteudo sem problema e consigo projecta-la no programa mas quando carrego num dos pc's para correr o SelectionChange é quando me dá o erro.

Obrigado

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

×
×
  • 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.