【问题标题】:" CS0122 'Collection<Larare>.Items' is inaccessible due to its protection level " but object is public [closed]“ CS0122 'Collection<Larare>.Items' 由于其保护级别而无法访问” 但对象是公开的 [关闭]
【发布时间】:2021-04-18 20:04:18
【问题描述】:

我正在尝试使用 https://stackoverflow.com/a/46898543/12955083 中所述的 Delete_Click 功能

private void Delete_Click(object sender, EventArgs e){  
lararLista.Items.Clear(); }

但是我收到错误 CS0122 'Collection.Items' 由于其保护级别而无法访问

集合Larare在绑定列表中定义为lararLista = new BindingList&lt;Larare&gt;();

Larare 的代码是

class Larare : Personal, ILarare
    {
        #region Variabler och ctor

        private string namn;
        private int personalID;
        private long personNummer;
        private long personNnummer;
        private string email;
        private int telNr;
       

        public Larare(string Namn, int PersonalID, long PersonNummer, string Email, int TelNr)
        {
            this.Namn = namn;
            this.PersonalID = personalID;
            this.PersonNummer = personNnummer;
            this.Email = email;
            this.TelNr = telNr;
        }

getter 和 setter 定义在一个继承自的类中

    class Personal : IPersonal
    {
        private string namn;
        private int personalID;

        private long personNnummer;
        private string email;
        private int telNr;


        private string taBort;

        public string Namn
        {
            get { return namn; }
            set { namn = value; }
        }
        public int PersonalID
        {
            get { return personalID; }
            set { personalID = value; }
        }
        public long PersonNummer
        {
            get { return personNnummer; }
            set { personNnummer = value; }
        }
        public string Email
        {
            get { return email; }
            set { email = value; }
        }
        public int TelNr
        {
            get { return telNr; }
            set { telNr = value; }
        }


        public string TaBort
        {
            get { return taBort; }
            set { taBort = value; }
        }

问题出在哪里?

编辑:

 void lararLista_AddingNew(object sender, AddingNewEventArgs e)
    {
        e.NewObject = new Larare(personalNamnText.Text, int.Parse(personalPersonalIDText.Text), long.Parse(personalPersonnummerText.Text),
            personalEmailText.Text, int.Parse(personalTelNrText.Text));

    }

lararLista.Add(new Larare("Rasmus", "123", "198911224130", "Rasmus@HS.se", "0704554488"));

是向集合中添加新对象的代码

【问题讨论】:

  • 您是否为您的class 指定了访问修饰符?如果不是,c# 默认为internal - 不是public。另外:在您提供的代码中,您没有对Collection.Items...做任何事情吗?
  • 对象用 void lararLista_AddingNew(object sender, AdditionalNewEventArgs e) { e.NewObject = new Larare(personalNamnText.Text, int.Parse(personalPersonalIDText.Text), long.Parse(personalPersonnummerText.Text) , 个人电子邮件文本.文本, int.Parse(personalTelNrText.Text));那是在同一个文件中。我已将访问修饰符更改为公开但没有更改
  • 请将该代码添加到您的问题 - 因为在评论中,它完全不可读。因此有人说:您的代码 sn-p 仍然对 Collection.Items 没有任何作用

标签: c# list public


【解决方案1】:

BindingList 中的 Items 属性不是公共的,因此您无法直接访问它。试试:

lararLista.ClearItems();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2015-09-26
    • 2011-09-01
    相关资源
    最近更新 更多