Benutzer mit den meisten Antworten
user-control Eigenschaften nicht auswählbar

Frage
-
ich habe ein usercontrol geschrieben, dass mehrere öffentliche Eigenschaften hat.
Füge ich das Control manuell in eine Form ein, kann ich über den Namen der Eigenschaft Werte im control ändern.
Füge ich das Control aber dynamisch in mein Formular ein, sind diese Eigenschaften nicht auswählbar und somit nicht ansprechbar.
Im folgenden Code erzeuge ich das control auf dem Formular.
private void fillDocument() { Control c = new LastAction.ucLastDocuments(); maxLastDocument_X = this.Width - c.Width - 10; c.Location = new Point(maxLastDocument_X, maxLastDocument_Y); maxLastDocument_Y += c.Height; if (maxLastDocument_Y < this.Height) { Zahler += 1; c.Name = "Test" + Zahler.ToString(); this.Controls.Add(c); } }
Test zur Änderungprivate void button10_Click(object sender, EventArgs e) { foreach (Control tempCtrl in this.Controls) { if (tempCtrl.Name == "Test2") { // Wenn Control gefunden, Eigenschaft ändern tempCtrl.EigeneEigenschaft = "TestName" //geht nicht, weil EigeneEgenschaft" nicht auswählbar ist } } }
Die Eigenschaft im Control ist folgender Massen angelegt:
public String EigeneEigenschaft
{
get { return _Eigenschaft; }
set { _Eigenschaft = value; }
}
Wie wäre es richtig?
Gruß Rolf- Bearbeitet Robert BreitenhoferModerator Donnerstag, 19. Mai 2011 15:49 Formatierung
Antworten
-
Hallo Rolf,
danke für die Antwort. Leider weiß ich nicht wie das gemeint ist. Ist ein eigenes usercontrol nicht ein control. Wo wird der Typ meines Controls definiert?
Anstelle von:
Control c = new LastAction.ucLastDocuments();
schreibst Du bspw.:
<TypDeinesControls> c = new LastAction.ucLastDocuments();
wobei dann <TypDeinesControls> wohl "LastAction.ucLastDocuments" wäre, wenn ich das richtig interpretiere.
Beim suchen deiner Controls und zuweisen der Eigenschaftenwerte dann wie bereits geschrieben:
(<TypDeinesControls>)tempCtrl.EigeneEigenschaft = "TestName";
Wie kann man in diesem Forum vernünftigen Text schreiben - meiner sieht irgendwie mißglückt aus?
Eigentlich gar nicht. Manche Leute schaffen das über den Editor, manche nicht (inkl. mir^^)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 19. Mai 2011 15:52
-
Hallo Stefan,
nun die letzte Frage zu diesem Thema.
Ich spreche mein Control in der Schleife nun folgender Maßen an.
ucLastDocuments xy = checked ((ucLastDocuments)tmpCtrl); xy.Eigenschaft = Wert;
Das funktioniert auch. Ist das eine empfehlenswerte Variante oder sollte man das eleganter/sicherer lösen?
Rolf- Bearbeitet Robert BreitenhoferModerator Donnerstag, 19. Mai 2011 15:51 Formatierung
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 19. Mai 2011 15:52
Alle Antworten
-
Hallo Rolf,
private void button10_Click(object sender, EventArgs e) { foreach (Control tempCtrl in this.Controls) { if (tempCtrl.Name == "Test2") { // Wenn Control gefunden, Eigenschaft ändern tempCtrl.EigeneEigenschaft = "TestName" //geht nicht, weil EigeneEgenschaft" nicht auswählbar ist } } }
Die .NET eigene Klasse Control kennt diese Eigenschaft natürlich gar nicht. Du müsstest dann schon sowohl beim einfügen als auch beim zuweisen der Eigenschaftenwerte in deinen Typ casten, damit das funktionieren kann.
(<TypDeinesControls>)tempCtrl.EigeneEigenschaft = "TestName"
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
danke für die Antwort. Leider weiß ich nicht wie das gemeint ist. Ist ein eigenes usercontrol nicht ein control. Wo wird der Typ meines Controls definiert?Wie kann man in diesem Forum vernünftigen Text schreiben - meiner sieht irgendwie mißglückt aus?
Rolf -
Hallo Rolf,
danke für die Antwort. Leider weiß ich nicht wie das gemeint ist. Ist ein eigenes usercontrol nicht ein control. Wo wird der Typ meines Controls definiert?
Anstelle von:
Control c = new LastAction.ucLastDocuments();
schreibst Du bspw.:
<TypDeinesControls> c = new LastAction.ucLastDocuments();
wobei dann <TypDeinesControls> wohl "LastAction.ucLastDocuments" wäre, wenn ich das richtig interpretiere.
Beim suchen deiner Controls und zuweisen der Eigenschaftenwerte dann wie bereits geschrieben:
(<TypDeinesControls>)tempCtrl.EigeneEigenschaft = "TestName";
Wie kann man in diesem Forum vernünftigen Text schreiben - meiner sieht irgendwie mißglückt aus?
Eigentlich gar nicht. Manche Leute schaffen das über den Editor, manche nicht (inkl. mir^^)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 19. Mai 2011 15:52
-
Hallo Stefan,
nun die letzte Frage zu diesem Thema.
Ich spreche mein Control in der Schleife nun folgender Maßen an.
ucLastDocuments xy = checked ((ucLastDocuments)tmpCtrl); xy.Eigenschaft = Wert;
Das funktioniert auch. Ist das eine empfehlenswerte Variante oder sollte man das eleganter/sicherer lösen?
Rolf- Bearbeitet Robert BreitenhoferModerator Donnerstag, 19. Mai 2011 15:51 Formatierung
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 19. Mai 2011 15:52
-
Hallo Rolf,
- Wie kann man in diesem Forum vernünftigen Text schreiben - meiner sieht irgendwie mißglückt aus?
Aus Referenz: http://social.msdn.microsoft.com/Forums/de-DE/help#276
Kann ich in den Foren in Antworten Code einfügen?
Ja, Sie können in Antworten auf einen Beitrag Code einfügen. Klicken Sie dazu im Rich-Text-Editor auf das Symbol Codeblock einfügen, der nach Klicken auf Antworten angezeigt wird. Geben Sie den Code in das Dialogfeld Code kolorieren ein, klicken Sie in der Dropdownliste auf die Codesprache, und klicken Sie dann auf Einfügen.
(in diesem Forum wählen wir dann oft C# als Codeformat)mal als Beispiel ... Dein Code sähe dann im Forum zum Beispiel so aus:
private void fillDocument() { Control c = new LastAction.ucLastDocuments(); maxLastDocument_X = this.Width - c.Width - 10; c.Location = new Point(maxLastDocument_X, maxLastDocument_Y); maxLastDocument_Y += c.Height; if (maxLastDocument_Y < this.Height) { Zahler += 1; c.Name = "Test" + Zahler.ToString(); this.Controls.Add(c); } } private void button10_Click(object sender, EventArgs e) { foreach (Control tempCtrl in this.Controls) { if (tempCtrl.Name == "Test2") { // Wenn Control gefunden, Eigenschaft ändern tempCtrl.EigeneEigenschaft = "TestName"; //geht nicht, weil EigeneEgenschaft" nicht auswählbar ist } } }
ciao Frank