Es ist nicht notwendig, die Textfelder aus dieser Klasse zum Panel hinzuzufügen.
public List<TextBox> textbox_generator(int days_count)
{
var textBoxes = new List<TextBox>();
for(int i = 0; i < days_count; i++)
{
txt_desc = new TextBox();
txt_desc.ID = "txt_desc" + i.ToString();
txt_desc.CssClass = "form-control";
txt_desc.Attributes.Add("placeholder", "Enter day " + i + " description");
txt_desc.TextMode = TextBoxMode.MultiLine;
textBoxes.Add(txt_desc);
}
return textBoxes;
}
Dann Code ändern zurück:
add_tour tour_obj = new add_tour();
int days_count = 2;
var textBoxes = tour_obj.textbox_generator(days_count);
foreach(var textBox in textBoxes)
{
itinerary_panel.Controls.Add(textBox);
}
Beachten Sie, dass Sie müssen vorsichtig sein, wo Sie diese Steuerelemente in der Seite Lebenszyklus hinzufügen. Siehe .
Das hält Ihre textbox_generator
davon ab, irgendetwas über die spezifische Seite zu wissen, die es verwendet.
Auch sollten Sie Ihre Namenskonventionen wirklich mit C# Standards ausrichten. Verwenden Sie PascalCasing. textbox_generator
sollte TextBoxGenerator
etc. sein. Und Sie können wahrscheinlich textbox_generator
in eine statische Methode machen, wenn es nicht auf Felder oder Eigenschaften seiner Klasse zugreifen muss.
Ihre Klasse sollte die Bedienelemente nicht berühren. Der Code dahinter sollte mit dem Erfassen von Werten und deren Übergabe an andere Klassen umgehen. – mason
was soll ich dann tun? –
Was meinst du? Ich habe dir gerade gesagt, was zu tun ist. – mason