Haby
Haby

Reputation: 35

How can I add class list items to listbox?

So I have this namespace with two clases:

namespace Fonoteka1
{
public class Daina : IEquatable<Daina>
{
    public string vardas { get; set; }
    public int kodas { get; set; }
    public Daina()
    {
        vardas = "nėra dainų";
        kodas = 0;
    }
    public bool Equals(Daina other)
    {
        throw new NotImplementedException();
    }
    public override string ToString()
    {
        return "Vieta: " + vardas + " Kodas: " + kodas;
    }
    public string getVardas()
    {
        return vardas;
    }
    public int getKodas()
    {
        return kodas;
    }
}
public class Program
{

    [STAThread]
   static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());

        List<Daina> pradinis = new List<Daina>();
        List<Daina> antras = new List<Daina>();

        pradinis.Add(new Daina { vardas = @"C:\Users\Gintarė\OneDrive\KTU paskaitos\5 semestras\Multimedijos sistemų projektavimas\Projektas\Fonoteka\Media\R. City - Locked Away ft. Adam Levine.mp3", kodas = 125 });
        pradinis.Add(new Daina { vardas = @"C:\Users\Gintarė\OneDrive\KTU paskaitos\5 semestras\Multimedijos sistemų projektavimas\Projektas\Fonoteka\Media\Red Hot Chili Peppers - Californication.mp3", kodas = 1269 });
        pradinis.Add(new Daina { vardas = @"C:\Users\Gintarė\OneDrive\KTU paskaitos\5 semestras\Multimedijos sistemų projektavimas\Projektas\Fonoteka\Media\BWO - Sunshine In The Rain.mp3", kodas = 15 });
        pradinis.Add(new Daina { vardas = @"C:\Users\Gintarė\OneDrive\KTU paskaitos\5 semestras\Multimedijos sistemų projektavimas\Projektas\Fonoteka\Media\Cloud Atlas - Sextet.mp3", kodas = 89 });

}
}
}

and other namespace with form (GUI):

namespace Fonoteka
{

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {

    }

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

I want to print pradinis list (from Fonoteka1) in listbox1 (From Fonoteka), but I have no idea how(In listbox I cant reach pradinis list)? Also, when I clisk on a song from listbox, with button1 I want to get that songs code ( int kodas from Daina class) Any help? :)

Upvotes: 0

Views: 384

Answers (1)

J3soon
J3soon

Reputation: 3153

Code after Application.Run(new Form1()); will be executed after closing the form.

Please put the code of adding to list inside Form1_Load, and add to listbox1.

private void Form1_Load(object sender, EventArgs e)
{
    pradinis.Add(new Daina { vardas = @"C:\Users\Gintarė\OneDrive\KTU paskaitos\5 semestras\Multimedijos sistemų projektavimas\Projektas\Fonoteka\Media\R. City - Locked Away ft. Adam Levine.mp3", kodas = 125 });
    pradinis.Add(new Daina { vardas = @"C:\Users\Gintarė\OneDrive\KTU paskaitos\5 semestras\Multimedijos sistemų projektavimas\Projektas\Fonoteka\Media\Red Hot Chili Peppers - Californication.mp3", kodas = 1269 });
    pradinis.Add(new Daina { vardas = @"C:\Users\Gintarė\OneDrive\KTU paskaitos\5 semestras\Multimedijos sistemų projektavimas\Projektas\Fonoteka\Media\BWO - Sunshine In The Rain.mp3", kodas = 15 });
    pradinis.Add(new Daina { vardas = @"C:\Users\Gintarė\OneDrive\KTU paskaitos\5 semestras\Multimedijos sistemų projektavimas\Projektas\Fonoteka\Media\Cloud Atlas - Sextet.mp3", kodas = 89 });
    foreach (Diana d in pradinis)
        listBox1.Items.Add(d.vardas);
}

The variables should be defined as Form1's variable

public partial class Form1 : Form
{
    List<Daina> pradinis = new List<Daina>();
    List<Daina> antras = new List<Daina>();
    ...
}

And for button text changing.

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if(listBox1.SelectedIndex != -1)
        button1.Text = pradinis[listBox1.SelectedIndex].kodas.ToString();
    else
        button1.Text = "";
} 

Update:

Seems that the list antras is for the selected songs, the code below adds the songs to antras when button1 is clicked.

(Use Ctrl and Shift to select multiple items in listbox)

private void Form1_Load(object sender, EventArgs e)
{
    listBox1.SelectionMode = SelectionMode.MultiExtended;
    ...
}
private void button1_Click(object sender, EventArgs e)
{
    antras.Clear();
    foreach(int index in listBox1.SelectedIndices)
        antras.Add(pradinis[listBox1.SelectedIndex]);
}

Upvotes: 1

Related Questions