Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在foreach循环中使用媒体播放器播放一些音频?_C#_For Loop - Fatal编程技术网

C# 如何在foreach循环中使用媒体播放器播放一些音频?

C# 如何在foreach循环中使用媒体播放器播放一些音频?,c#,for-loop,C#,For Loop,我在文本框中有一个句子,我想让MediaPlayer从文件夹中读取它。为了做到这一点,我写了一些代码来获取句子中的每个单词。现在我想播放它的音频。但我做不到。MediaPlayer只播放最后一个。我认为这是因为阻止MediaPlayer在每个循环中播放,或者速度非常快。如何暂停播放,然后允许循环再次继续(不使用计时器) 当我取消注释//MessageBox.Show(word.TrimEnd())时它播放,但我不想使用messagebox。谢谢首先,您不需要手动收集所有这些文件名 而不是 str

我在文本框中有一个句子,我想让MediaPlayer从文件夹中读取它。为了做到这一点,我写了一些代码来获取句子中的每个单词。现在我想播放它的音频。但我做不到。MediaPlayer只播放最后一个。我认为这是因为阻止MediaPlayer在每个循环中播放,或者速度非常快。如何暂停播放,然后允许循环再次继续(不使用计时器)


当我取消注释
//MessageBox.Show(word.TrimEnd())时它播放,但我不想使用messagebox。谢谢

首先,您不需要手动收集所有这些文件名

而不是

string vocab = textBox2.Text.ToLower() + " ";
string word = null;
foreach (char c in vocab)
{
   word += c;
   if (c == ' ')
   {
       axWindowsMediaPlayer1.URL = ("some url parts for example" + word.TrimEnd() + ".mp3");
       word = null;
   }
}
您可以简单地执行以下操作:

string[] fileNames = textBox2.Text
  .ToLower().Split(" ").Select(word => String.Format("C:\some url parts for example\{0}.mp3", word.Trim());
它接受句子,将其转换为小写,用空格将其拆分为一个单词数组。然后,修剪每个单词并将其转换为
mp3
文件的路径

播放音频文件怎么样?因此,您可以将字符串转换为文件列表,将其创建为播放列表,然后使用播放机播放:

string tempPlaylistFilename = Path.Combine(Path.GetTempPath(), "TemporaryPlaylist.m3u");

string[] fileNames = textBox2.Text
                       .ToLower()
                       .Split(" ")
                       .Select(word => String.Format("C:\some url parts for example\{0}.mp3", word.Trim());

File.WriteAllLines(fileNames)

axWindowsMediaPlayer1.URL = tempPlaylistFilename;

您可以在任何地方保存此播放列表,我只是决定使用临时文件夹。

我的表单上有一个
axWindowsMediaPlayer1
工具箱,它必须播放文件夹中的每个单词,该文件夹的名称与已拆分的每个单词相同。(当我使用
xWindowsMediaPlayer1.URL=(“../folderName/”+word+“.mp3”)时)
xWindowsMediaPlayer1
播放该路径中的单词。但我不知道该由谁来处理所有单词,因为我可以播放每个单词本身,当我使用循环时,它只播放最后一个单词。@user1605859我知道。这就是为什么我向您展示了如何使用播放列表:)但代码中有一些错误。也许我被URL搞糊涂了。@user1605859有什么错误?您使用什么Visual Studio版本?我使用的是Visual Studio 2010。
string tempPlaylistFilename = Path.Combine(Path.GetTempPath(), "TemporaryPlaylist.m3u");

string[] fileNames = textBox2.Text
                       .ToLower()
                       .Split(" ")
                       .Select(word => String.Format("C:\some url parts for example\{0}.mp3", word.Trim());

File.WriteAllLines(fileNames)

axWindowsMediaPlayer1.URL = tempPlaylistFilename;