0

我有一个公共类,其中包含我的 5 点构造函数的代码:

public LibraryBook( string title, string author, string publisher,
         int year, string number)
    {
    }

构造函数的部分 exstring title是该类中的属性,但它们必须具有私有的 set-accessor,以便在创建后无法更新。基本上我不能使用无参数构造函数来创建要使用的空对象。

这就是我的教授对我的要求:

相反,您必须首先从表单的文本框中提取所需的所有数据(完成),然后使用这些值构造 LibraryBook 对象(完成)。LibraryBook 类中只有一个构造函数,它要求您将标题、作者、版权年份等作为参数传递。一旦创建了图书,您可以将其添加到表单的图书列表中,并将其标题添加到表单的列表框。

这就是我在表单类中所拥有的,它全部在私有事件处理程序中,不确定它是否应该在一个方法中,所以我可以在另一个事件处理程序中访问它,因为我有一个需要显示详细信息的按钮ListBox,和我不知道如何引用它并让它显示。

List<LibraryBook> booklist = new List<LibraryBook>();

string titles;
titles = titleTextBox.Text;

LibraryBook book = new LibraryBook(titles, authors, publishers, years, numbers);

booklist.Add(book);

booksListBox.Items.Add(titles);
4

2 回答 2

1

在事件处理程序之外声明书单,例如

 public class Form1
 {
    private List<LibraryBook> booklist = new List<LibraryBook>();

    private void Button_Click(....)
    {
            string titles;
            titles = titleTextBox.Text;

            LibraryBook book = new LibraryBook(titles, authors, publishers, years, numbers);

            booklist.Add(book);

            booksListBox.Items.Add(titles);
    }

  }

现在可以通过 Form1 类中的任何私有方法访问它......

关于你问题的另一部分。就像你的教授说的那样,他想要私人集合访问者,但获取应该是公开的。例如:

public LibraryBook( string title, string author, string publisher,
     int year, string number)
{
    public string Title { get; private set; }
}

然后,当您想要列表中第一本书的标题时,您可以这样做:

LibraryBook book = booklist[0];
string myTitle = book.Title;
于 2012-12-10T14:57:31.950 回答
0

如果我正确理解了您的问题,您只需将书单存放在 Form 类的私人成员中:

public class Form
{
    private List<LibraryBook> _books = new List<LibraryBook>();


    protected void Handle_Form_Submit_whatever()
    {
        var book = new LibraryBook(...); // add all the stuff from the form inputs

        _books.Add(book);

    }

   protected void Some_other_Eventhandler()
   {

       //do stuff with _books
   }


}
于 2012-12-10T14:59:28.927 回答