2015-11-03 61 views
0

我已經初始化的書籍以下ArrayList的,我可以遍歷搜索項目:在一個ArrayList

public void InitializeArrayList() 
{ 
    list.Add(new Books("Pride and Prejudice", "Jane Austen", "Romance", "1813")); 
    list.Add(new Books("The Notebook", "Nicholas Sparks", "Romance", "1996")); 
    list.Add(new Books("Carrie", "Stephen King", "Horror", "1974")); 
    list.Add(new Books("The Shining", "Stephen King", "Horror", "1977")); 
    list.Add(new Books("A Game of Thrones", "George R.R. Martin", "Fantasy", "1996")); 
    list.Add(new Books("A Clash of Kings", "George R.R. Martin", "Fantasy", "1998")); 
    list.Add(new Books("A Storm of Swords", "George R.R. Martin", "Fantasy", "2000")); 
    list.Add(new Books("A Feast for Crows", "George R.R. Martin", "Fantasy", "2005")); 
    list.Add(new Books("A Dance with Dragons", "George R.R. Martin", "Fantasy", "2011")); 
    list.Add(new Books("Gone Girl", "Gillian Flynn", "Thriller", "2014")); 
    list.Add(new Books("The Girl on the Train", "Paula Hawkins", "Thriller", "2015")); 
    list.Add(new Books("The Hunger Games", "Suzanne Collins", "Science Fiction", "2008")); 
    list.Add(new Books("Catching Fire", "Suzanne Collins", "Science Fiction", "2009")); 
    list.Add(new Books("Mockingjay", "Suzanne Collins", "Science Fiction", "2010")); 
    list.Add(new Books("Matilda", "Roald Dahl", "Children's Fiction", "1988")); 
    list.Add(new Books("Charlie and the Chocolate Factory", "Roald Dahl", "Children's Fiction", "1964")); 
    list.Add(new Books("Room", "Emma Donoghue", "Fiction", "2010")); 
    list.Add(new Books("Holes", "Louis Sachar", "Fiction", "1998")); 
    list.Add(new Books("About a Boy", "Nick Hornby", "Fiction", "1998")); 
} 

我想打一個搜索按鈕,這樣我可以輸入書名,當我按下搜索它會發送給我一個新的表格,包含在該書中的所有細節,包含在數組中(標題,作者,流派)。

這是我嘗試迄今:

private void button3_Click(object sender, EventArgs e) 
{ 
    String match = textbox.Text; 
    foreach (Object b in list) 
    { 
     Books book = (Books)b; 
     if (book.Equals(match)) 
     { 
      Form2 form = new Form2(); 
      form.Visible = true; 
     } 
    } 
} 

基本上,我不知道如何使它發送到新的形式與所有這些細節?

+1

什麼是你的問題的一個簡單的方法? – Blorgbeard

回答

4

其他表單需要能夠接受您的輸入。您可以添加接受,像窗體2的屬性:

class Form2{ public Book book { get; set; } ...} 

// then in form1: 
Form2 form = new Form2(); 
form.book = book; 
... 
0

我希望自己的圖書類有三個屬性作者,標題,流派

private void button3_Click(object sender, EventArgs e) 
    { 
     String match = textbox.Text; 
     foreach (Object b in list) 
     { 
      Books book = (Books)b; 
      if (book.Author.Contains(match) || book.Title.Contains(match) || book.Genre.Contains(match)) 
      { 
       Form2 form = new Form2(); 
       form.Book = book; 
       form.Show(); 
      } 
     } 
    } 

而對於經過搜索到的詳細信息,可以在Form2中創建一個Book屬性。

+0

這無關緊要,無論如何,它將與OP初始化列表相同,例如這個 'var listXX = new List (){ 「傲慢與偏見」,「簡·奧斯汀」,「浪漫」 ,「1813」};'什麼都進入了textbox.Text它會找到匹配...所以我害怕沒有看到'Book'類..你只是猜測..也.Contains不會是什麼他正在尋找能夠與許多人相匹敵的人 – MethodMan

0
private void button3_Click(object sender, EventArgs e) 
{ 
String match = textbox.Text; 
List<Books> mybookslist = new List<Books>(); 
foreach (Books b in list) 
{ 
    if (book.Author.Contains(match) || book.Title.Contains(match) || book.Genre.Contains(match)) 

    { 
     mybookslist.Add(b); 
    } 
} 
//Navigation code here with your data(mybookslist) 
} 

現在mybookslist包含與搜索字詞匹配的所有圖書。

0

如果您想通過Initializing測試這個List<T>(){}你可以看到,同樣會工作。但是我建議你不要硬代碼,如果你可以做一個List<Class>這意味着你的Books類,那麼你只需創建一個新的對象實例和對象添加到列表基於硬盤的代碼,這將是初始化List<T>對象,但創建List<ClassObject>會是一個更好的辦法

var bookList = new List<object>() 
{ 
    "Pride and Prejudice", "Jane Austen", "Romance", "1813", 
    "The Notebook", "Nicholas Sparks", "Romance", "1996", 
    "Carrie", "Stephen King", "Horror", "1974", 
    "The Shining", "Stephen King", "Horror", "1977", 
    "A Game of Thrones", "George R.R. Martin", "Fantasy", "1996", 
    "A Clash of Kings", "George R.R. Martin", "Fantasy", "1998", 
    "A Storm of Swords", "George R.R. Martin", "Fantasy", "2000", 
    "A Feast for Crows", "George R.R. Martin", "Fantasy", "2005", 
    "A Dance with Dragons", "George R.R. Martin", "Fantasy", "2011"//, 
    //etc......, 
}; 

String match = "A Feast for Crows"; 
var bookslist = new List<object>(); 
foreach (Object b in bookList) 
{ 
    if (b.Equals(match)) 
    { 
     bookslist.Add(b); 
    } 
}