2017-04-14 4 views
1

저는 C#으로 음악 플레이어를 만드는 중입니다. 나는 지금 음악 재생 목록을 만들고있어 붙어있다. 현재로서는 tabControl과 빈 목록 상자가있는 탭을 추가하는 버튼을 사용하고 있습니다.버튼과 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); 
} 

내가으로 실행하고 문제는 내가 사용자가 탭 내에서 이러한 동적으로 생성 된리스트 박스에 음악을 추가 할 수 있도록하는 방법을 모르는 것입니다 : 여기에 그 버튼에 대한 코드입니다. 음악의 기본 목록은 첫 번째 탭의 목록 상자에 있으며 사용자가이 음악을 선택하여 새 목록 상자 또는 "재생 목록"에 넣을 수있게하여 필자는 어떻게 든 그들을 참조해야합니다.

+0

하지 마십시오. XAML 배우기. –

+0

사용자가 음악을 선택하고 해당 listItem을 새 탭에 추가하게하는 이유는 무엇입니까? – MetaColon

+0

@MetaColon 탭이 목록 상자로 동적으로 생성되므로 새 탭/목록 상자를 참조하는 방법을 모르겠습니다. – csharpsendhelp

답변

0

난 그냥 당신이 입력 한 각 플레이리스트 (탭 -) 이름과 노래 목록 상자가 는 songList라는 것을 선택한 곡을 추가 할 수있는 버튼 (addToPlayListButton), 텍스트 상자 (playListName)가 있다고 가정합니다. 또한 모든 새로운 재생 목록에는 새로운 탭이 있다고 가정합니다. 그런

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); 
+0

고마워,이 꽤 잘 작동하는 것. 이제는 모든 노래 위치에서 내 연극, 일시 정지 등을 만들어야합니다. – csharpsendhelp