0

コードは、Visual Studio 2012 で実行された ac# Windows フォーム アプリケーションです。タスクの目的は、GUI で辞書を使用して書籍を追加、削除、および検索することです。

GUIアプリケーションをレイアウトしました.4つのボタン、2つのテキストフィールド、2つのチェックボックスリスト、そしてそれらが何をするかを説明するいくつかのラベルが含まれています.

button3ISBN を使用した検索を有効にすることになっています。(ユーザーが に ISBN を入力するtextbox1と、その一部を含むすべての書籍が照合されます)

ここに私のフォームコードがあります

Dictionary<string, Book> library = new Dictionary<string, Book>();
public Form1()
{
    InitializeComponent();
    button1.Text = "Add Book";
    button2.Text = "Remove Book";
    button3.Text = "Search Using ISBN";
    button4.Text = "Search Using Title";
    label1.Text = "Enter ISBN below";
    label2.Text = "Enter Title below";
    label3.Text = "Tick boxes on the left display if a book is loaned or not";
    label4.Text = "All books found after search";
}

public void Update()
{
    checkedListBox1.Items.Clear();
    foreach (var pair in library)
    {
        checkedListBox1.Items.Add(pair.Value);
    }
}
private void button1_Click(object sender, EventArgs e) //Add Button
{
    if (textBox1.Text != "" && textBox2.Text != "")
    {
        library[textBox1.Text] = new Book(textBox1.Text, textBox2.Text);
        Update();
    }
}
private void button2_Click(object sender, EventArgs e) //Remove Button
{
        library.Remove(textBox1.Text);
        Update();
}
private void button3_Click(object sender, EventArgs e) //ISBN Search Button
{
}

}

そしてBookクラス。

class Book
{
    private String isbn;
    private string title
    private Boolean onloan = false;
    public Book(string isbn, string title)
    {
        this.isbn = isbn;
        this.title = title;
    }
    public string ISBN
    {
        get { return isbn; }
        set { isbn = value; }
    }
    public string Title
    {
        get { return title; }
        set { title = value; }
    }
    override public String ToString()
    {
        return this.ISBN + "        " + this.Title;
    }
} 

私は苦労していbutton3ます。に ISBN の一部を入力しtextbox1てボタンをクリックすると、辞書が検索され、一致する本が見つかった場合は他の に表示されますchecklistbox2

に表示する方法をいくつか試しましたchecklistbox2が、ボタンをクリックしても には何も表示されませんchecklistbox2

私はこれを行う方法に本当に困惑しています。

私が試してみました。

編集:

どこが間違っていたのかがわかりました。私のロジックには何も問題はありませんでした。悲しいことに、私の form.design.cs には含まれていませんでした

this.button3.Click += new System.EventHandler(this.button3_Click);

これを修正し、すべてが正常に機能するようになりました。

4

2 に答える 2

0

ラムダ式を使用できます

private void button3_Click(object sender, EventArgs e) //ISBN Search Button
{
    checkedListBox2.Items.Add(_library.First(i => i.Key == textBox1.Text).Value);
}
于 2014-12-06T02:52:35.977 に答える