Тема: C# передача в подію поточного індексу list<>
Створив клас для певних даних:
namespace Circle_Detect
{
class measureData
{
public float D;
public float F;
public float K;
public int Q;
public measureData(float d, float f)
{
D = d;
F = f;
K = f / (float) (Math.Pow(d, 2));
if (d == 10)
{ Q = 20; }
else if (d == 5)
{ Q = 10; }
else if (d == 2.5f)
{ Q = 5; }
else if (d == 2)
{ Q = 4; }
else if (d == 1)
{ Q = 5; }
}
}
}
Далі оголосив список об'єктів:
List<measureData> listMD = new List<measureData>();
Далі додав об'єктів до списку з даними:
listMD.Add(new measureData(10, 3000));
listMD.Add(new measureData(5, 1000));
listMD.Add(new measureData(3, 500));
listMD.Add(new measureData(2, 100));
listMD.Add(new measureData(1, 50));
Далі сформував пункти меню зі списку і обробники подій в циклі:
foreach (measureData menuData in listMD)
{
string strMenu = String.Format("{0}, {1} ", menuData.D, menuData.F);
ToolStripMenuItem newItem = new ToolStripMenuItem(strMenu) { CheckOnClick = true, Checked = false };
newItem.Click += newItem_Click;
listMDMenu.DropDownItems.Add(newItem);
}
Далі хочу в обробнику подій побачити всі данні з класу measureData з індексом списку listMD, що б індекс списку відповідав індексу меню який викликав подію. Зараз там стоїть індекс нуль, просто так для прикладу.
void newItem_Click(object sender, EventArgs e)
{
string strMsg = String.Format("{0}, {1}, {2}, {3}",listMD[0].D , listMD[0].F, listMD[0].K, listMD[0].Q);
MessageBox.Show(strMsg);
}
Як бути?