C# 在通过tabcontrol创建的新选项卡中播放列表框中的音乐?

C# 在通过tabcontrol创建的新选项卡中播放列表框中的音乐?,c#,winforms,visual-studio,windows-media-player,C#,Winforms,Visual Studio,Windows Media Player,以下是C语言中的添加播放列表代码# 以下是播放按钮代码: private void Play_Click(object sender, EventArgs e) { double pausedPosition = WMPPlayer.Ctlcontrols.currentPosition; WMPPlayer.URL = filepaths[listBox1.SelectedIndex]; WMPPlayer.Ctlcontrols.currentPosition

以下是C语言中的添加播放列表代码#

以下是播放按钮代码:

private void Play_Click(object sender, EventArgs e)
{   
    double pausedPosition = WMPPlayer.Ctlcontrols.currentPosition;
    WMPPlayer.URL = filepaths[listBox1.SelectedIndex];
    WMPPlayer.Ctlcontrols.currentPosition = pausedPosition;
    WMPPlayer.Ctlcontrols.play();
}    
将音乐添加到选项卡代码:

private void addToPlaylistToolStripMenuItem_Click(object sender, EventArgs e)
    {
        (tabControl1.TabPages.Cast<TabPage>()
            .FirstOrDefault(page => page.Text == tabControl1.SelectedTab.Text)
            ?.Controls.Cast<Control>()
            .FirstOrDefault(control => control is ListBox) as ListBox)?.Items.Add(listBox1.SelectedItem);

        listBox1.SelectionMode = SelectionMode.MultiExtended;
        ListBox current_listbox = (ListBox)tabControl1.SelectedTab.Controls[0];
    }
private void addToPlaylistToolStripMenuItem\u单击(对象发送方,事件参数e)
{
(tabControl1.TabPages.Cast()
.FirstOrDefault(page=>page.Text==tabControl1.SelectedTab.Text)
?.Controls.Cast()
.FirstOrDefault(控件=>控件是ListBox)作为ListBox)?.Items.Add(listBox1.SelectedItem);
listBox1.SelectionMode=SelectionMode.MultiExtended;
ListBox当前_ListBox=(ListBox)选项卡控件1.SelectedTab.Controls[0];
}

当我们在播放按钮代码中引用ListBox1时,这是在制作新标签之前屏幕中间的主列表框。这是一个音乐播放器,新标签是用户可以添加音乐的播放列表。当我尝试通过新选项卡播放歌曲时,没有播放任何内容。如何使“播放”按钮在这些新形成的选项卡/列表框中播放歌曲?

您必须自己找到活动控件。由于选项卡页上似乎只有一个控件,因此您只需访问控件集合中的第一个控件:

private void Play_Click(object sender, EventArgs e)
{
  ListBox lb = tabControl1.SelectedTab.Controls[0] as ListBox;
  if (lb != null && lb.SelectedIndex > -1) {
    double pausedPosition = WMPPlayer.Ctlcontrols.currentPosition;
    WMPPlayer.URL = filepaths[lb.SelectedIndex];
    WMPPlayer.Ctlcontrols.currentPosition = pausedPosition;
    WMPPlayer.Ctlcontrols.play();
  }
}

如果TabPages上有多个控件,则可以循环浏览控件,查找列表框类型,或者为控件指定一个可以用作键的特定名称。

我不太明白这个答案。tabpage没有“Control”的定义,As有一个预期的“;”,并且从不使用Listbox。所有的错误都在“如果”之前的第一行,你添加的编辑仍然只播放主列表框中突出显示的内容。除了当前打开的选项卡外,还有什么方法可以清除其他选项卡中所有选定的索引?@BenjaminBraddock您的filepath变量没有意义,因为您是通过索引引用它的。每个选项卡都需要自己的文件路径列表。您没有发布有关如何提供ListBox集合的任何代码。已编辑该问题以包含“通过创建ListBox”选项卡code@BenjaminBraddock你已经发布了代码。根据您发布的代码,列表框为空。
private void Play_Click(object sender, EventArgs e)
{
  ListBox lb = tabControl1.SelectedTab.Controls[0] as ListBox;
  if (lb != null && lb.SelectedIndex > -1) {
    double pausedPosition = WMPPlayer.Ctlcontrols.currentPosition;
    WMPPlayer.URL = filepaths[lb.SelectedIndex];
    WMPPlayer.Ctlcontrols.currentPosition = pausedPosition;
    WMPPlayer.Ctlcontrols.play();
  }
}