C# อ่านค่า string จาก List เพื่อนำมาเล่นกับ mp3 ไม่ได้ครับ

ผมต้องการเล่นไฟล์ mp3 จากชื่อไฟลืที่เก็บอยู่ใน List แต่เมื่อวนลูปด้วย for เพื่อแสดงข้อมูลใน List ออกมามันจะเล่นเฉพาะไฟล์สุดท้ายของชื่อใน List ครับ

private void button1_Click(object sender, EventArgs e)
{
    List<String> voiceTH = new List<string>ร้องไห้);
    WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();

    voiceTH = NumberToWordTH("551");

    foreach (string i in voiceTH)
    {
        wplayer.URL = "voicesTH\\" + i + ".mp3";
        wplayer.controls.play();

        Console.WriteLine("voicesTH\\" + i + ".mp3");
    }
}

ผลการ Run ตรง output แสดงผลได้แบบนี้ครับ

voicesTH\five.mp3
voicesTH\thousand.mp3
voicesTH\five.mp3
voicesTH\ten.mp3
voicesTH\1sp.mp3

ซึ่งเอาต์พุตจะเล่นเฉพาะไฟล์เสียงจาก List บรรทัดสุดท้ายได้คือไฟล์ 1sp.mp3 เท่านั้นครับ แต่ที่ผมต้องการคือเล่นไฟล์เสียงหมดทุกบรรทัดครับตามที่วนลูป ไม่ทราบว่าจะต้องแก้ไขยังไงครับ

ผมลองแก้ตามเว็บนี้ http://stackoverflow.com/questions/17644754/how-to-detect-when-a-mp3-file-has-finished-playing แก้แล้วเป็นแบบนี้ครับ พอ Run แล้วกลายเป็นเล่นไฟล์เสียงบรรทัดสุดท้ายคือ 1sp .mp3 วนลูปอยู่ไฟล์เดียว

     private void button1_Click(object sender, EventArgs e)
        {
            List<String> voiceTH = new List<string>ร้องไห้);

            voiceTH = NumberToWordTH("5051");
            
            wplayer = new WMPLib.WindowsMediaPlayer();

            foreach (string i in voiceTH)
            {

                tmr.Stop();
                tmr.Tick += new EventHandler(tmr_Tick);
                
                wplayer.URL = "voicesTH\\" + i + ".mp3";

                wplayer.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(wplayer_PlayStateChange);
                wplayer.controls.play();
                Console.WriteLine("voicesTH\\" + i + ".mp3");
            }

        }

        void wplayer_PlayStateChange(int NewState)
        {
            if (NewState == (int)WMPLib.WMPPlayState.wmppsMediaEnded)
            {
                tmr.Start();

            }
        }

        private void tmr_Tick(object sender, EventArgs e)
        {
            tmr.Stop();
            wplayer.controls.play();
        }
แก้ไขข้อความเมื่อ
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 2
ทำไมไม่สร้าง playlist ล่ะ



[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่