2016-12-01 186 views
-3

我創建了一個空列表,當用戶輸入新曲目並且我的界面有列表框和一個texbox以及添加和刪除按鈕時,它將被使用。如何將文本從文本框添加到列表中

我的目標是當我向列表框中添加一個新項目時,使用該功能將該項目添加到列表中,而不是將它們添加到列表框中而不存儲它。

trackListbox.Items.Add(newTracktextBox.Text); 
List<Songs> NewSongs = newTracktextBox.Text().ToList(); ; this is not correct 

任何不同的想法?

class Songs 
{ 
    private string trackName; 
    private int trackLength; 
    public Songs (string trackName, int trackLength) 
    { 
     this.trackName = trackName; 
     this.trackLength = trackLength; 
    } 
} 
+0

什麼是歌曲?請同時顯示該課程 –

+0

歌曲是存儲關於曲目名稱及其長度的數據的類。 – Mobster007

+0

@ Mobster007您可以將它添加到OP嗎? – RandomStranger

回答

0

這是很好的做法,將類命名爲Song,而不是Songs因爲它僅代表一個歌曲。


隨着通過使用BindingList<Song>

private BindingList<Song> SongList; 

public Form1() 
{ 
    InitializeComponent(); 

    // Initialise a new list and bind it to the listbox 
    SongList = new BindingList<Song>(); 
    listBox1.DataSource = SongList; 
} 


private void button1_Click(object sender, EventArgs e) 
{ 
    // Create a new song and add it to the list, 
    // the listbox will automatically update accordingly 
    Song song = new Song(newTracktextBox.Text, 100); 
    SongList.Add(song); 
} 

class Song 
{ 
    private string trackName; 
    private int trackLength; 

    public Song(string trackName, int trackLength) 
    { 
     this.trackName = trackName; 
     this.trackLength = trackLength; 
    } 

    public override string ToString() 
    { 
     return trackName; 
    } 
} 

結果

手動添加歌曲到 listBox

private List<Song> SongList; 

public Form1() 
{ 
    InitializeComponent(); 

    SongList = new List<Song>(); 
} 

private void button1_Click(object sender, EventArgs e)  
{ 
    Song song = new Song(newTracktextBox.Text, 100); 
    SongList.Add(song); 
    listBox1.Items.Add(song); // The trackName will be shown because we are doing a override on the ToString() in the Song class 
} 

class Song 
{ 
    private string trackName; 
    private int trackLength; 

    public Song(string trackName, int trackLength) 
    { 
     this.trackName = trackName; 
     this.trackLength = trackLength; 
    } 

    public override string ToString() 
    { 
     return trackName; 
     // Case you want to show more... 
     // return trackName + ": " + trackLength; 
    } 
} 

帶自動結合

result

+0

謝謝你的出色工作 – Mobster007

+0

@ Mobster007不客氣 – Jim

0

您的newTracktextBox變量不是宋類型的對象。

您應該創建Song類型與在newTracktextBox了一個新的文本對象和新對象添加到列表中

3

試試這個

Songs objSong = new Songs(newTracktextBox.Text,0); // define your length instead of 0 

List<Songs> NewSongs = new List<Songs>(); 
NewSongs.Add(objSong); 
+0

看看他的類,構造不採取0的參數,屬性是私人的,這種解決方案不會工作 – Setar

+2

相應地改變:) –

0
public class Songs{ 
    String TrackName; 
    int TrackLength; 
    public Songs(string trackName, int trackLength){ 
     this.TrackName = trackName; 
     this.TrackLength = trackLength; 
    } 
    //methods 
} 

使歌曲

列表
List<Songs> NewSongs = new List<Songs>(); 

將新歌曲添加到列表中

int tracklength = 50; // set the tracklength where you need 
NewSongs.Add(new Songs(TextBox.Text.ToString(),tracklegnth)); 

請注意,ToString()方法可能會減少。

希望我幫助

+0

我認爲你的東西很好。我會盡快給您回覆。謝謝 – Mobster007

+0

我已經創建了第二個文本框,它取代了你的軌道長度,但只有問題我有,我需要將文本從文本框轉換爲int – Mobster007

+0

從現在開始,你必須搜索一點,但在發佈問題之前,你需要的是這裏http:// stackoverflow .com/questions/2709253 /轉換爲一個整數在android上 – Setar

相關問題