Я бы хотел пройтись по списку в приложении 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
}