简体   繁体   中英

c# How to make that selected item from listbox will be shown in label?

So I have a question, where to put that code in Windows Forms that it would be refreshed every time I select other item in listbox? I tried to put in listBox1, but it crash my whole program, I tried to put it in public Form2() but it show just first selected item in label4, and do not refresh after I select other item in listBox1. Any solutions?

    var selected = listBox1.SelectedItem.ToString();
    label4.Text = selected;

full code below

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;`

namespace VocaFlash_Japanese
{
    public partial class Form2 : Form
    {
        public List<string> words = new List<string>();
        public string Wor;
        public int State = 0;


        public Form2()
        {
            InitializeComponent();
            loadfile();
            listBox1.DataSource = words;
            //var selected = listBox1.SelectedItem.ToString();
          //  label4.Text = selected;

            hidetext();

        }
        private void hidetext()
        {
            textBox1.Hide();
            textBox2.Hide();
            textBox3.Hide();
            label1.Hide();
            label2.Hide();
            label3.Hide();
        }
        private void showtext()
        {
            textBox1.Show();
            textBox2.Show();
            textBox3.Show();
            label1.Show();
            label2.Show();
            label3.Show();
        }
        public void Save()
        {
            const string sPath = "Data.txt";
            System.IO.StreamWriter sw = new System.IO.StreamWriter(sPath);
            foreach (string item in words)
            {
                sw.WriteLine(item);
            }

            sw.Close();
        }
        private void UpdateListBox(List<string> words)
        {
            //string contents = null;
            List<string> itemAll = new List<string>();
            foreach (string str in words)
            {
                itemAll.Add(str);
            }
        }
        /*public void Save(List<string> words)
        {
            StringBuilder contents = new StringBuilder();
            foreach (string s in words)
            {
                contents.AppendLine(s);
            }
            System.IO.File.WriteAllText(@"Data.txt", contents.ToString());
        }*/
        private void loadfile()
        {
            string line;
            var file = new System.IO.StreamReader("Data.txt");
            while ((line = file.ReadLine()) != null)
            {
                words.Add(line);
            }
        }
       /* private void Remove()
        {
            string contents = null;
            List<string> itemAll = new List<string>();
            foreach (string str in words)
            {
                itemAll.Add(str);
            }
            foreach (string lstitem in listBox1.SelectedItems)
            {
                itemAll.Remove(lstitem);
                //File.AppendAllText(strFile + "Currently In.txt", strName + Environment.NewLine);
            }
            foreach (string s in itemAll)
            { contents += s + Environment.NewLine; }
            System.IO.File.WriteAllText(@"Data.txt", contents);

        }*/
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
           var selected = listBox1.SelectedItem.ToString();
            label4.Text = selected;
        }


        private void button4_Click(object sender, EventArgs e)
        {
            Meniu men = new Meniu();
            men.Show();
            this.Hide();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            State += 1;
            switch (State)
            {
                case 1:
                    showtext();
                    break;
                case 2:
                    words.Add(textBox1.Text);

                    listBox1.DataSource = null;
                    listBox1.DataSource = words;

                    Save();

                    State = 0;
                    textBox1.Text = "";

                    hidetext();
                    break;
                default:
                    Console.WriteLine("Default case");
                    break;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
           /* // The Remove button was clicked.
            int selectedIndex = listBox1.SelectedIndex;

            try
            {
                // Remove the item in the List.
                words.RemoveAt(selectedIndex);
            }
            catch
            {
            }

            listBox1.DataSource = null;
            listBox1.DataSource = words;
            Remove();*/
            // The Remove button was clicked.
            int selectedIndex = listBox1.SelectedIndex;

            try
            {
                // Remove the item in the List.
                words.RemoveAt(selectedIndex); //Remove item from words
                UpdateListBox(words);//Update contents on GUI
                Save(); //Save on IO
                listBox1.DataSource = null;
                listBox1.DataSource = words;

            }
            catch
            {
            }


        }

        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            Environment.Exit(0);
        }

        private void button3_Click(object sender, EventArgs e)
        {

        }

        private void label4_Click(object sender, EventArgs e)
        {
        }
    }
}

you need to double click in the designer on the events tab for the ListBox1 control to have it automatically create the SelectedIndexChanged just find that SelectedIndexChanged and double click it

inside the event put the following code

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
    var selected = listBox1.GetItemText(listBox1.SelectedValue);
    label4.Text = selected; 
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM