#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. Вот и все!! Большое вам спасибо, это спасло мой очень тяжелый день! Одно виртуальное пиво для вас!