@deadspace12

Почему при передаче методов в батон в листбоксе ничего не выводит?

Работаю с делегатами в текстбокс уже введеные данные через комбобокс я выбираю сортировку и она должна выводить в листбокс но этого не происходит не понимаю в чем я ошибся помогите в данной проблеме
вот мой код
батон
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Add("Сосотяние студента "+textBox1.Text);
Persons f = new Persons();
string parametr = Convert.ToString(comboBox1.Text);
f.StartSortPersons(parametr, listBox1, textBox2, textBox3,textBox4,textBox5);
}
форма с данными
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.SelectedIndex = 0;
textBox1.Text = "Шурко Сергей Петрович";
textBox2.Text = "13";
textBox3.Text = "больной";
textBox4.Text = "14";
textBox5.Text = "здоровый";
}
public delegate int Health(Pers obj1, Pers obj2);
public class Pers
{
public int age = 0;
public string heart = "";
public Pers() { }
public Pers(int a,string h)
{
heart = h;
age = a;
}
public Pers(Pers p)
{
heart = p.heart;
age = p.age;
}
private static int HealthHeart(Pers obj1, Pers obj2)
{
return (string.Compare(obj1.heart, obj2.heart));
}
private static int HealthAge(Pers obj1, Pers obj2)
{
if (obj1.age > obj2.age)
return (1);
else
if (obj1.age < obj2.age)
return (-1);
else
return (0);
}
private static int HealthHeartAge(Pers obj1, Pers obj2)
{
if (obj1.age > obj2.age)
return (1);
else
if (obj1.age < obj2.age)
return (-1);
else
return (string.Compare(obj1.heart, obj2.heart));
}
public static Health SortByHeart
{
get { return (new Health(HealthHeart)); }
}
public static Health SortByAge
{
get { return (new Health(HealthAge)); }
}
public static Health SortByHeartAge
{
get { return (new Health(HealthHeartAge)); }
}
}
class Persons
{
private int Item = 0;
const int n = 100;
private Pers[] persons = new Pers[n];

public void AddPerson(Pers pers)
{
if (Item < n)
{
Pers p = new Pers(pers);
persons[Item++] = p;
}
else
MessageBox.Show("Не могу добавить Pers");
}
public void LoadPersons(TextBox textBox2, TextBox textBox3,TextBox textBox4, TextBox textBox5)
{
AddPerson(new Pers(Convert.ToInt32(textBox2.Text),Convert.ToString(textBox3.Text)));
AddPerson(new Pers(Convert.ToInt32(textBox4.Text), Convert.ToString(textBox5.Text)));
}
public void PrintPersons(ListBox listbox1)
{
for (int i = 0; i < Item; i++)
{
listbox1.Items.Add(Convert.ToInt32(persons[i].age) + Convert.ToString(persons[i].heart) + " ");
}
}
public void SimpleSortPerson(Health health)
{
Pers temp = new Pers();
for (int i = 1; i < Item; i++)
for (int j = Item - 1; j >= i; j--)
if (health(persons[j], persons[j - 1]) == -1)
{
temp = persons[j - 1];
persons[j - 1] = persons[j];
persons[j] = temp;
}
}
public void StartSortPersons(string parametr, ListBox listbox1, TextBox textBox2, TextBox textBox3,TextBox textBox4, TextBox textBox5)
{
Persons persons = new Persons();
persons.LoadPersons(textBox2, textBox3,textBox4,textBox5);
if (parametr == "По состоянию здоровья")
{
listbox1.Items.Add("Сортировка по состоянию здоровья: ");
persons.SimpleSortPerson(Pers.SortByHeart);
persons.PrintPersons(listbox1);
}
else if (parametr == "По возрасту")
{
listbox1.Items.Add("Сортировка по возрасту: ");
persons.SimpleSortPerson(Pers.SortByAge);
persons.PrintPersons(listbox1);
}
else if (parametr == "По возрасту и по состоянию здоровья")
{
listbox1.Items.Add("Сортировка по возрасту и по состояниюю здоровья: ");
persons.SimpleSortPerson(Pers.SortByHeartAge);
persons.PrintPersons(listbox1);
}
}
}
Буду очень благодарен за помощь
  • Вопрос задан
  • 25 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Tiamat Games Москва
от 75 000 до 125 000 ₽
ФинГрад Москва
от 80 000 до 150 000 ₽
Across Systems Новосибирск
До 180 000 ₽