由于其防护等级,为什么我仍然无法访问?#34;错误?

时间:2018-05-10 18:06:04

标签: c# winforms user-controls

我正在使用具有多个用户控件的WinForm为不同的项目页面创建移动订购应用程序。我无法制作我的cartList,它存储添加的项目,我的TeaItem类可以从其他页面访问。我环顾四周,找到了不同的解决方案但没有任何效果。现在,我在项目中为我的cartList和我的TeaItem单独添加了一个类。 (这是一家茶店)

这是我的代码"添加到购物车"用户控制:(" AddMenu.cs")

public partial class AddMenu : UserControl
{
    public AddMenu()
    {
        InitializeComponent();
    }
    public void addToCart_Click(object sender, EventArgs e)
    {
        GlobalCartList.cartList.Add(new TeaItem() { teaName = addTeaNameLabel, teaSize = addSizeComboBox.SelectedItem });
            # cartList, teaName, and teaSize give me the inaccessible errors
    }

    # more code
}

购物车清单的单独类:(" GlobalCartList.cs")

public class GlobalCartList
{
        List<TeaItem> cartList = new List<TeaItem>();
}

和茶项目:(&#34; TeaItem.cs&#34;)

public class TeaItem
{
    string teaName;
    string teaSize;
}

有人能说出我为什么还会收到这个错误吗?

2 个答案:

答案 0 :(得分:0)

您正在尝试获取卡片列表,因为它是静态的,但它实际上是GlobalCartList类的非静态成员:

其次,您试图让它像公共成员一样,但cardlist是私有的。

  // Here you try to access like it is an static public member.
  GlobalCartList.cartList.Add(...)

要调用cardlist,您必须将其公开,以便可以在GlobalCartList类之外调用它。其次,你必须使cardlist静态,这样你就可以在不创建GlobalCartList类的实例的情况下调用它。

public class GlobalCartList
{
    public static List<TeaItem> cartList = new List<TeaItem>();
}

这是TeaItem使其成员公开:

 public class TeaItem
 {
    public string teaName;
    public string teaSize;
 }
  

请注意,如果未在成员前面指定public,则通过defautlt   该成员是private,默认情况下是一个类的成员   是none static

答案 1 :(得分:0)

这是因为默认情况下List<TeaItem> cartList是私有的。您应该添加公共(或内部)访问修饰符。 也许它应该是静态的,因为你没有实例化GlobalCartList类。

public class GlobalCartList
{
    public static List<TeaItem> cartList = new List<TeaItem>();
}