/ / Próba pobrania wartości z dynamicznego niestandardowego formantu - c #, xml, winformy, niestandardowe elementy sterujące, dynamiczne elementy sterujące

Próba pobrania wartości z dynamicznego niestandardowego formantu - c #, xml, winformy, niestandardowe elementy sterujące, dynamiczne elementy sterujące

Muszę pobrać tekst z pola tekstowego wewnątrzniestandardowa kontrola. Formant niestandardowy jest częścią tablicy ArrayList, więc w formularzu może być wyświetlanych wiele formantów niestandardowych. Jak uzyskać dostęp do tekstu z pojedynczego pola tekstowego w jednym z elementów sterujących w ArrayList?

Poniższy kod pokazuje, w jaki sposób utworzę dynamiczne sterowanie niestandardowe:

    ArrayList assessmentInfo = new ArrayList();

int length = (int)moduleInfoLevel6.numericUpDownModuleAssessmentNum.Value;
for (int i = 0; i < length; i++)
{
assessmentInfo.Add(new AssessmentInfo());
System.Drawing.Point p = new System.Drawing.Point(10, 160 + i * 32);
(assessmentInfo[i] as AssessmentInfo).Location = p;
(assessmentInfo[i] as AssessmentInfo).Size = new System.Drawing.Size(440, 32);
tabPageLevel6.Controls.Add((assessmentInfo[i] as AssessmentInfo));
}

Oto zrzuty ekranu pokazujące, jak wyświetlane jest sterowanie niestandardowe:

własna kontrola assessmentInfo

http://i.imgur.com/9qwCL.jpg

Jak niestandardowy formant jest wyświetlany w formularzu

http://i.imgur.com/DFJYV.jpg

Odpowiedzi:

0 dla odpowiedzi № 1

możesz dodać nazwę do każdej kontrolki

coś jak:

(assessmentInfo[i] as AssessmentInfo).Name = "assessmentInfo" + i.ToString();

wtedy możesz uzyskać do niego dostęp w następujący sposób

foreach (object control in tabPageLevel6.Controls)
{
if (control is AssessmentInfo)
{
if ((control as AssessmentInfo).Name == "assessmentInfo1")
// do something with the control
MessageBox.Show((control as AssessmentInfo).Name);
}
}