Доступ и обновление значения свойства класса из пользовательского элемента управления c # Windows forms

#c# #winforms #user-controls

#c# #винформы #пользовательские элементы управления #winforms

Вопрос:

У меня есть пользовательский элемент управления под названием UCPlayerAccount, в котором я создал «модель», экземпляр класса PersonModel, и заполнил его значениями. Теперь в UCPlayerAccount у меня есть кнопка, которая загружает другой пользовательский элемент управления, скажем, он называется UCX, со своей собственной логикой для создания некоторых задач для пользователя. Когда пользователь подтвердит ответы, я хочу суммировать баллы со значением из модели.Свойство Points, но в UCX я не могу получить доступ к экземпляру «model», поскольку он находится из предыдущего пользовательского элемента управления, то есть из UCPlayerAccount. Я использую C # Windows Form. Это мой класс PersonModel:

 public class PersonModel
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string NickName { get; set; }
    public int Points { get; set; }
    public int CurrLevel { get; set; }
    public int CurrClass { get; set; }
    public List<AvatarPicture> Avatars { get; set; } = new List<AvatarPicture>();

    public string FullName
    {
        get { return $"{ FirstName } { LastName }"; }
    }
}
  

Как получить доступ к «модели» в UCX, кто-нибудь может помочь?

Комментарии:

1. Вы можете добавить общедоступное свойство (или общедоступный метод) в UCX, которое задается model при создании UCX. Вы можете передать текущее Points значение в UCX таким образом. Или передайте PersonModel экземпляр в UCX, когда он создаст его экземпляр. В этом случае UCX должен знать о существовании этого PersonModel класса, что не совсем хорошо , но и не ужасно . Это зависит от того, сколько принципов вы готовы нарушить 🙂

2. Хорошо, в UCX я добавил общедоступную модель PersonModel { get { return model; } set { model = value; } } , теперь она выдает мне систему. StackOverflowExeption в части get {return model;}

3. Да, вполне вероятно 🙂 Используйте другой метод: добавьте public int ModelPoints { get; set; } в класс UCX. Затем, когда model создается UCX, задайте свойству текущее значение: var ucx = new UCX(); ucx.ModelPoints = this.Points; . Когда в UCX вам понадобится это значение, прочитайте ModelPoints .

4. Вот и все!! Большое вам спасибо, это спасло мой очень тяжелый день! Одно виртуальное пиво для вас!