C# 如何从WinForms窗体事件处理程序操作类对象?

C# 如何从WinForms窗体事件处理程序操作类对象?,c#,winforms,C#,Winforms,这个问题可能看起来很琐碎,但我仍然有问题,因为我是个笨蛋。 因此,我正在使用Windows窗体创建一个书店应用程序 我为Book创建了一个单独的类。我想对这个Book类执行以下操作:创建Book对象,将它们添加到列表中;然后,我需要从事件处理程序方法访问此列表的Book对象。似乎我在将Book对象添加到列表中时也遇到了问题。你能告诉我如何组织这种代码吗 以下是两个代码: 表格1.cs: using System.Collections.Generic; using System.Windows.

这个问题可能看起来很琐碎,但我仍然有问题,因为我是个笨蛋。 因此,我正在使用Windows窗体创建一个书店应用程序

我为Book创建了一个单独的类。我想对这个Book类执行以下操作:创建Book对象,将它们添加到列表中;然后,我需要从事件处理程序方法访问此列表的Book对象。似乎我在将Book对象添加到列表中时也遇到了问题。你能告诉我如何组织这种代码吗

以下是两个代码:

表格1.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对象,然后尝试将其添加到列表中时发生的情况: 您需要将

Books.Add(Book1);

在不在类中的方法中。

您不能在函数之外编写代码(除了声明属性)

移动你的代码,构造函数就会工作(或者你选择的其他函数)

像这样

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"));
}
private List book;//您可以从表单中的任何位置访问此内容
公共书店表格()
{
初始化组件();
书籍=新列表();
Book Book1=新书(“作者”、“ISBN”、5、“标题”);
新增(第1册);
}
私有void myEvnetHandler(对象发送方,事件参数e)
{
图书。添加(新书(“斯蒂芬·R·戴维斯”,“0764508148”,12.45米,“傻瓜书”);
}

但是如果我将它放在一个方法中,我是否可以说,它可能无法从其他方法访问?您可以定义一个方法,然后在其他方法中调用它。但是,我无法从事件处理程序访问图书列表,这从一开始就是问题所在。所以,如果我写
Books.Add(新书(“StephenR.Davis”,“0764508148”,12.45m,“C#For Dummies”)
在事件处理程序方法中,它表示“当前上下文中不存在书籍”,但我无法从事件处理程序访问书籍列表,这从一开始就是问题所在。所以,如果我写
Books.Add(新书(“StephenR.Davis”,“0764508148”,12.45m,“C#For Dummies”)
在事件处理程序方法中,它表示“书籍在当前上下文中不存在”
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"));
}