我在文本框中有一个句子,我想让MediaPlayer从文件夹中读取它。为此,我编写了一些代码来获取句子所包含的每个单词。现在我想播放它的音频。但我不能这样做。 MediaPlayer只播放最后一个。我认为这是因为阻止MediaPlayer在每个循环中播放或者非常快速地进行。如何在其中暂停播放然后再次允许循环(不使用计时器)?
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");
// MessageBox.Show(word.TrimEnd());
word = null;
}
}
当我取消注释它播放的// MessageBox.Show(word.TrimEnd());
但我不想使用消息框时。感谢
答案 0 :(得分:0)
首先,您不需要手动收集所有这些文件名。
而不是
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;
您可以将此播放列表保存在任何地方,我只是决定使用临时文件夹。