【问题标题】:How to reference/link to a listbox that is dynamically created using a button and tabControl?如何引用/链接到使用按钮和 tabControl 动态创建的列表框?
【发布时间】:2017-04-14 17:19:45
【问题描述】:

我正在用 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);
}

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

【问题讨论】:

  • 不要那样做。学习 XAML。
  • 为什么不让用户选择音乐并将那些 listItems 添加到新标签中?
  • @MetaColon 我不知道如何引用新的选项卡/列表框,因为选项卡是使用列表框动态创建的。
  • 这是什么技术?网络表格? ASP.NET MVC?赢得表格? WPF?银光?还有什么?
  • @UweKeim 这是 Win Forms。

标签: c# winforms tabcontrol


【解决方案1】:

我只是假设您有一个按钮 (addToPlayListButton)、一个文本框 (playListName) 用于将所选歌曲添加到输入的播放列表 (tab-) 名称中并且您的歌曲列表框被称为 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);

【讨论】:

  • 非常感谢,这似乎工作得很好。现在我只需要让我的播放、暂停等适用于所有歌曲位置。
猜你喜欢
  • 1970-01-01
  • 2020-02-29
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多