Перебирать список и иметь ссылку для каждого элемента списка - PullRequest
0 голосов
/ 06 июня 2018

Я бы хотел пройтись по списку в приложении C # Forms, где в форме пользователь увидит список и может щелкнуть кнопку или ссылку, связанную с каждым элементом списка.Например: я знаю, используя ruby, я мог бы добиться этого с помощью следующего кода:

 <% @pets.each do |pet| %>

    <%= link_to 'Edit', edit_pet_path(pet) %>

 <% end %>

Вместо того, чтобы открывать ссылку, я хочу открыть второе всплывающее окно с информацией о выбранном элементе.

Сейчас я в настоящее время перебираю список для отображения элементов, а также у меня есть метод petsList_Click, который открывает второе всплывающее окно при нажатии на список.Проблема в том, что он нажимает на список целиком, а не на отдельные элементы списка.Если пользователь нажимает на первый элемент списка, я хочу, чтобы во всплывающее окно передавалась только та информация.

Вот моя основная форма с моим списком и методом клика:

public partial class Form1 : Form
    {


        public Form1()
        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Tabby newTabby1 = new Tabby("sunshine", 22222222222222222, new DateTime(2016, 2, 24), false);

            Chiwawa newChi1 = new Chiwawa("tony", 33333333333333333, new DateTime(2016, 2, 24), false);

            Siamese newsia1 = new Siamese("felix", 44444444444444444, new DateTime(2016, 3, 11), false);

            Husky newHusk1 = new Husky("fluffs", 55555555555555555, new DateTime(2016, 2, 24), false);
            List<Pet> list = new List<Pet>();
            list.Add(newTabby1);
            list.Add(newChi1);
            list.Add(newsia1);
            StringBuilder builder = new StringBuilder();
            foreach (var item in list)
            {
                Console.WriteLine("list item " + item.Chip );
                builder.Append(item.name + " " + item.Chip + " " + item.arrivalDate + " status" + item.adoptedStatus).Append("\n");


            }
            string result = builder.ToString(); // Get string from StringBuilder
            petList.Text = result;

            petCount.Text = "Pets Available : " + Pet.petCount;

        }

        private Image ImageUrl(object p)
        {
            throw new NotImplementedException();
        }

        private void petList_Click(object sender, EventArgs e)
        {
            PetInfoForm aPetInfoForm = new PetInfoForm();
            aPetInfoForm.Closed += (s, args) => this.Close();
            aPetInfoForm.Show();
        }
    }

Вот мой PetInfoForm

public partial class PetInfoForm : Form
    {
        public PetInfoForm()
        {
            InitializeComponent();
        }

        private void PetInfoForm_Load(object sender, EventArgs e)
        {

        }
    }

И на всякий случай, если это необходимо.Вот мой класс домашних животных, от которого наследуются классы породы: публичный абстрактный класс Pet {

    #region Fields
    protected long chip;
    protected DateTime ArrivalDate;
    public string name;
    protected bool AdoptedStatus;
    public static int petCount = 0;


    #endregion End of Fields

    #region Constructors 
    public Pet()
    {
        chip = 0;
        AdoptedStatus = false;
        petCount++;
    }
    public Pet(string name, long chip, DateTime arrivalDate, Boolean adoptedStatus)
    {
        this.chip = chip;
        ArrivalDate = arrivalDate;
        AdoptedStatus = adoptedStatus;
        this.name = name;
        petCount++;

    }
    #endregion End of Constructors

    #region Properties



    public int PetCount
    {
        get
        {
            return petCount;
        }
    }
    public long Chip
    {
        get
        {
            return chip;
        }
        set
        {
            if (value > 0)
                chip = value;
            else
                chip = 0;
        }
    }

    public DateTime arrivalDate { get; set; }



    public Boolean adoptedStatus { get; set; }



    #endregion End Properties

    #region Methods

    public bool UpdateStatus() => adoptedStatus = true;
    public int UpdateInventory() => petCount = petCount - 1;
    public abstract void Noise();


    #endregion End of Methods
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...