2017-03-23 1 views
0

Denn hier bessere Erklärung ist eine GUI Screen:C# Add-Verfahren Gruppen 1 von 1 bis Ansicht Liste dann Listenausführung mit Methodengruppen enthält - nur keine getrennten Verfahren dynamisch

SCREEN GUI (kann kleines Bild nicht nur hinzufügen Link ) enter image description here

Und hier ist ein all meinen Code mit Kommentaren:

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.Media; // to play sounds 


namespace Music_PLayer 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      //List View 
      listView1.View = View.Details; 
      listView1.FullRowSelect = true; 

      // Columns CONSTRUCT 
      listView1.Columns.Add("ID", 70); 
      listView1.Columns.Add("Music name", 150); 

      //combobox items 
      comboBox1.Items.Add("Music 1"); 
      comboBox1.Items.Add("Music 2"); 
      comboBox1.Items.Add("Music 3"); 
      comboBox1.Items.Add("Music 4"); 
      comboBox1.Items.Add("Music 5"); 
     } 

     // ADD TO List VIEW 
     private void add(int ID, string name_music) 
     { 
      string[] row = { Convert.ToString(ID), name_music }; 

      ListViewItem item = new ListViewItem(row); 

      listView1.Items.Add(item); 
     } 

     //button to delete selected items in list view 
     private void button_delete_selected_music_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       listView1.SelectedItems[0].Remove(); 
      } 
      catch { } 

     } 
**//EDITED :** 
     // buttton to add music to list view 
     int i = 0; 
     private void button_add_music_Click(object sender, EventArgs e) 
     { 

     if (comboBox1.SelectedIndex==0) 
     { 
      dictOfDelegate.Add("Music 1", playmusic1); 
      add(i, comboBox1.Text); 
     } 
     if (comboBox1.SelectedIndex == 1) 
     { 
      dictOfDelegate.Add("Music 2", playmusic2); 
      add(i, comboBox1.Text); 
     } 
     if (comboBox1.SelectedIndex == 2) 
     { 
      dictOfDelegate.Add("Music 3", playmusic3); 
      add(i, comboBox1.Text); 
     } 
     if (comboBox1.SelectedIndex == 3) 
     { 
      dictOfDelegate.Add("Music 4", playmusic4); 
      add(i, comboBox1.Text); 
     } 
     if (comboBox1.SelectedIndex == 4) 
     { 
      dictOfDelegate.Add("Music 5", playmusic5); 
      add(i, comboBox1.Text); 
     } 

     } 

     // button to start music 
     private void button_start_music(object sender, EventArgs e) 
     { 

     } 


     // Voids with music : 
     public void playmusic1() 
     { 

      SoundPlayer audio = new SoundPlayer(Music_PLayer.Properties.Resources.playsound1); 
      audio.Play(); 
     } 
     public void playmusic2() 
     { 
      SoundPlayer audio = new SoundPlayer(Music_PLayer.Properties.Resources.playsound2); 
      audio.Play(); 
     } 
     public void playmusic3() 
     { 
      SoundPlayer audio = new SoundPlayer(Music_PLayer.Properties.Resources.playsound3); 
      audio.Play(); 

     } 
      public void playmusic4() 
      { 
       SoundPlayer audio = new SoundPlayer(Music_PLayer.Properties.Resources.playsound4); 
       audio.Play(); 
      } 
      public void playmusic5() 
      { 
       SoundPlayer audio = new SoundPlayer(Music_PLayer.Properties.Resources.playsound5); 
       audio.Play(); 
      } 
       public delegate void PlayMusic(); 
// EDITED 
     Dictionary<string, PlayMusic> dictOfDelegate = new Dictionary<string, PlayMusic>(); 

     void CreateList() 
     { 
     dictOfDelegate.Add("Music 1", playmusic1); 
     dictOfDelegate.Add("Music 2", playmusic2); 
     dictOfDelegate.Add("Music 3", playmusic3); 
     dictOfDelegate.Add("Music 4", playmusic4); 
     dictOfDelegate.Add("Music 5", playmusic5); 
     } 

    void InvokeMethod(string item) 
    { 
     PlayMusic method = dictOfDelegate.First(x => x.Key == item).Value; 

     method.Invoke(); 
    } 
    } 
} 

ich möchte ein Lied aus der Combobox auszuwählen es zu der Wiedergabeliste hinzufügen, die von oben nach unten spielen wird nach einem Klick auf die Schaltfläche "Musik starten".

Ich möchte einen ausgewählten Song aus der Combobox zur Listenansicht hinzufügen, wenn Sie auf die Schaltfläche "Musik zur Liste hinzufügen" klicken. Natürlich kann ich mit der Schaltfläche "Delete selected music" ein Lied aus der Liste löschen.

Also muss ich zum Beispiel tun, wenn ich aus der Combobox (Music1) klicken Sie auf die Schaltfläche (Add Music to list), es wird ID 1 Musikname Musik 1 angezeigt und wenn Sie auf die Schaltfläche Musik starten klicken wird void abspielen music1();

Ich weiß, dass ich nur gerade Text von Combobox in dem Listview, aber ich weiß nicht, wie kann ich Methode dort ...

Ich weiß nicht wirklich, wie Start-Schaltfläche Musik kodieren (i darüber nachzudenken, Warteschlange), um Musik mit meinem listView1 nacheinander abzuspielen.

Alles, was ich brauche, ist Sammlung oder etwas oder Warteschlange.

Wenn ich erklären nicht exacly nur fragen ..

Antwort

0

Sie wirklich, wirklich wollen kein separates Verfahren haben, jeden möglichen Ton zu spielen - das wird ein Albtraum sein, gelinde gesagt.

Eine Sache, die Sie könnte tun ist dynamically load things from resource files. Die verknüpfte Frage enthält ein Beispiel speziell für Soundplayer.

Von der akzeptierte Antwort wie folgt vor, um dynamisch die Ressource abzurufen: die Audio-

object o = Properties.Resources.ResourceManager.GetObject("whateverName"); 

Sie werfen es dann in einen Stream und spielen.

Sie müssen nicht unbedingt eine Ressourcendatei verwenden. Wenn Sie wissen, wo sich die Sounds befinden, können Sie einfach eine Liste von Dateinamen in den Ordnern der Fragen abrufen.

Bearbeiten: Wenn Sie wirklich separate Methoden möchten, können Sie immer ein Dictionary verwenden, um den Soundnamen der auszuführenden Methode zuzuordnen. Etwas nach dem Vorbild dieses Skript, das ich zusammen in LINQPad setzen:

void Main() 
{ 
    var db = new Dictionary<string, Action>(); 
    db.Add("Music 1", PlaySound1); 

    // Retrieve the method we're looking for and execute it 
    db["Music 1"](); 
} 

private void PlaySound1() 
{ 
    // Play the sound 
} 

Sie könnte auch eine switch Anweisung tun:

switch (soundName) { 
    case "Music 1": 
     // Play music 1 
     break; 
    case "Music 2": 
     // Play music 2 
     break; 
    // ... 
} 
+0

Sie haben Recht, ich das dynamisch tun, aber ich möchte dies tun Wie gesagt, ich habe ein anderes Programm mit getrennten Methoden und ich brauche nur das!Wie kann ich das mit separaten Methoden tun? – Michael

+0

Entschuldigung dafür, aber ich brauche nur in getrennten Methoden. Du solltest geduldig sein und nur darüber nachdenken, wie ich das machen kann? Danke für Ihr Vergnügen. – Michael

+0

@Michael Ich bearbeitet - Sie könnten ein Wörterbuch verwenden, um den Namen des Sounds der Methode zuzuordnen, wenn Sie möchten. – EJoshuaS

Verwandte Themen