Как мне манипулировать объектами класса из моих обработчиков событий формы WinForms? - PullRequest
0 голосов
/ 10 февраля 2019

Этот вопрос может показаться тривиальным, но у меня все еще есть проблемы, потому что я тупица.Итак, я создаю приложение Book Store с помощью Windows Forms.

Я создал отдельный класс для Book.С этим классом Book я хочу сделать следующее: создавать объекты Book, добавлять их в список;затем мне нужно будет получить доступ к объектам Book этого списка из методов обработчика событий.Кажется, у меня проблемы даже с добавлением объекта Book в список.Можете ли вы дать мне указание, как мне организовать такой код?

Вот два кода:

form1.cs:

using System.Collections.Generic;
using System.Windows.Forms;

namespace BookStore
{
    public partial class BookStoreForm : Form
    {
        List<Book> Books = new List<Book>();
        Book Book1 = new Book("Author", "ISBN", 5, "Title");
       // Books.Add(Book1);

        public BookStoreForm()
        {
            InitializeComponent();
        }


    }
}

book.cs:

namespace BookStore
{
    public class Book
    {
        public string Author { get; set; }
        public string ISBN { get; set; }
        public decimal Price { get; set; }
        public string Title { get; set; }

        public Book() { }

        public Book(string Author, string ISBN, decimal Price, string Title)
        {
            this.Author = Author;
            this.ISBN = ISBN;
            this.Price = Price;
            this.Title = Title;
        }

    }
}

Вот что происходит, когда я создаю объект Book и затем пытаюсь добавить его в список: My error

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Вы не можете написать код вне функции (помимо объявления свойств)

Переместите код в конструктор, и он будет работать (или другая функция по вашему выбору)

Вот так

private List<Book> Books; // this will be accessible from anywhere in you form

public BookStoreForm()
{
      InitializeComponent();
      Books = new List<Book>();
      Book Book1 = new Book("Author", "ISBN", 5, "Title");
      Books.Add(Book1);

}

private void myEvnetHandler(object sender, EventArgs e)
{
     Books.Add(new Book("Stephen R. Davis", "0764508148", 12.45m, "C# For Dummies"));
}
0 голосов
/ 10 февраля 2019

вам нужно поместить

Books.Add(Book1);

в метод, не входящий в класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...