如何 reference/link 到使用按钮和 tabControl 动态创建的列表框?

How to reference/link to a listbox that is dynamically created using a button and tabControl?

我正在使用 C# 制作音乐播放器。我现在正在制作音乐播放列表,但卡住了。截至目前,我正在使用 tabControl 和一个添加带有空列表框的选项卡的按钮。这是该按钮的代码:

private void button10_Click(object sender, EventArgs e)
{
    TabPage tp = new TabPage("Playlist");
    tabControl1.TabPages.Add(tp);

    ListBox lb = new ListBox();
    lb.Dock = DockStyle.Fill;

    tp.Controls.Add(lb);
}

我遇到的问题 运行 是我不知道如何允许用户将音乐添加到选项卡中这些动态创建的列表框。主要的音乐列表位于第一个选项卡的列表框中,我希望用户能够 select 此音乐并将其放入新的列表框或 "playlists" 所以我需要以某种方式引用它们.

我假设您有一个按钮 (addToPlayListButton),一个文本框 (playListName) 用于将所选歌曲添加到输入的播放列表(制表符-)名称以及您的歌曲列表框名为 songList。我还假设每个新播放列表都有一个新标签。在那种情况下,您必须识别它们,所以我会更改选项卡的名称:

TabPage tp = new TabPage($"Playlist {tabControl1.TabPages.Count}");

所以你必须像这样处理来自 addToPlayListButton 的按钮点击事件:

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