Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 08:51

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C# Control mit gleichen Namen finden?

Discussion on C# Control mit gleichen Namen finden? within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Apr 2008
Posts: 15
Received Thanks: 1
C# Control mit gleichen Namen finden?

Hey,

ich schreibe grade eine Art Kundenverwaltung und ich will dabei auch natürlich die Möglichkeit geben, mehrere Leute auf einmal hinzuzufügen, indem man das bei einer ComboBox auswählt.

Nun habe ich die Textboxen so benannt:
textBox_FirstName
textBox_FirstName2
textBox_FirstName3
usw ... und das halt bei LastName, Street usw.

Das ganze fängt bei mir in der Schleife bei 3 an, weil der Eintrag Nummer eins immer da ist und 2 auch. Danach will ich die Textboxen dann dementsprechend freigeben oder visible machen.

Das habe ich bis jetzt aber so finde ich die Elemente leider nicht.

Code:
private void HideOrShowControls(bool visible)
{
    string startString = "textBox_";

    for(int i = 3; i <= 8; i++)
    {
        startString += i.ToString();
        TextBox textBox = (TextBox)Controls.Find(startString, true).First();
    
        textBox.Visible = visible;     
    }
}
Wie könnte ich das dann hinkriegen, das er dann alle Textboxen findet? Es sind insgesamt 9 pro Eintrag, also lohnt sich das doch schon oder?
GeKiller is offline  
Old 03/04/2015, 08:01   #2


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Wenn du doch ohnehin schon die Controls dynamisch hinzufügen willst, würde ich sie überhaupt gar nicht statisch anlegen. Das führt außerdem zu unsauberem Code, weil du genau das selbe dynamisch erledigen kannst, ohne ein Limit von Textboxen zu haben und somit auch nicht mehr darauf angewiesen bist, alle Möglichkeiten statisch hinzuzufügen.

Pseudocode, mehr oder weniger:
Code:
formOnLoad()
{
    for(var i = 0; i < 3; ++i)
        AddTextInput(new TextBox(String.Format("textbox_{0}", Controls.Count + i));
}

OnAddInputButtonClicked()
{
    AddTextInput(new TextBox(String.Format("textbox_{0}", Controls.Count));
}

AddTextInput(TextBox textInput)
{
    textInput.TextChanged += OnInputEntered();
    Controls.Add(textInput);
}

OnInputEntered(EventArgs e, object sender)
{
    var textBox = (TextBox) sender;
    // ...
}
Ist vermutlich genau das, was du vor hast. Die genauen Funktionsparameter habe ich nicht im Kopf, da musst du in den Dokus mal nachsehen.
Mostey is offline  
Old 03/06/2015, 12:16   #3
 
elite*gold: 0
Join Date: Apr 2008
Posts: 15
Received Thanks: 1
Hey,

ich denke, das ich deinen Post verstanden habe, auch wenn ein paar Bezeichnung falsch waren aber danke.

Wenn aber wenigstens 2 "Eintragsblöcker" sowieso immer einblendet, kann man die doch wenistesn statisch anlegen oder?

Wie könnte man das denn dann mit den Abständen regeln, weil diese ja auch alle die gleichen Abstände haben sollen und das auch ein wenig so aussehn soll, wie ich das will.
Ein einzelnen "Eintragsblock" soll dann auch noch einen gewissen Abstand haben, also irgendwie so in der Richtung:


So sollte es schon ungefähr aussehen.
Zudem sollen die ganzen anderen Blöcke ja auch nur angezeigt werden, wenn der Benutzer es so will, also wenn er z.B 6 Einträge auswählt. Arbeitet man dann mit Hide? Wie kommt man dann an das Control ran?
GeKiller is offline  
Old 03/06/2015, 13:17   #4


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
Quote:
Originally Posted by GeKiller View Post
Wenn aber wenigstens 2 "Eintragsblöcker" sowieso immer einblendet, kann man die doch wenistesn statisch anlegen oder?
Könnte man sicherlich, allerdings ist das mehr oder weniger überflüssig wenn du doch ohnehin vor hast, die restlichen Blöcke dynamisch anzulegen. Wieso nicht also einfach nachdem die Form angezeigt wurde, die beiden Blöcke genau so hinzufügen, wie du es auch sonst machen würdest, wenn der User einen weiteren Block wünscht?

Quote:
Originally Posted by GeKiller View Post
Wie könnte man das denn dann mit den Abständen regeln, weil diese ja auch alle die gleichen Abstände haben sollen und das auch ein wenig so aussehn soll, wie ich das will.
Ein einzelnen "Eintragsblock" soll dann auch noch einen gewissen Abstand haben, also irgendwie so in der Richtung:
Ist relativ einfach, da jedes Control eine Position haben sollte. Die Dokus helfen dir da bestimmt, eine Koordinate (X/Y bzw. Top/Left) solltest du auf jeden Fall setzen können.

Code:
GetLastTextInput()
{
    // magic
}

AddTextInput(TextBox textInput)
{
    textInput.TextChanged += OnInputEntered();

    var lastTextInput = GetLastTextInput();
    textInput.Position.Y = lastTextInput + 10; // 10 wäre in diesem Fall der vertikale Abstand
    Controls.Add(textInput);
}
Auch hier wieder: Pseudocode. Die genauen Namen der Eigenschaften musst du dir selbst raussuchen. zur GetLastTextInput Methode: Hier hast du mehrere Möglichkeiten. Du kannst theoretisch zu Beginn eine Liste innerhalb der Form anlegen die stets gepflegt wird, wenn du Elemente hinzufügst/entfernst. Da das aber eher unsauber ist, weil du Daten unnötig an 2 Stellen pflegen musst, kannst du dir alle Textboxen innerhalb deiner Form suchen lassen und so die letzte rauspicken. ()



Quote:
Originally Posted by GeKiller View Post
So sollte es schon ungefähr aussehen.
Zudem sollen die ganzen anderen Blöcke ja auch nur angezeigt werden, wenn der Benutzer es so will, also wenn er z.B 6 Einträge auswählt. Arbeitet man dann mit Hide? Wie kommt man dann an das Control ran?
Würde ich nicht. Wenn der User auf einen Button klickt, der das dazugehörige Control entfernt, würde ich es auch entfernen und nicht nur verstecken.

Jede Form hat eine Controls Eigenschaft in der alle Controls vorhanden sind. Darüber könntest du suchen - oder du spezifizierst Gruppen. (z.B. 1 Textbox + 2 zugehörige Buttons für + und -, + handelt dabei generisch und bezieht sich nicht auf die Textbox bzw. den Eintrag). Stichwort UserControl. Das sollte die Frage klären, wie du an das dazugehörige Textbox Element kommst.
Mostey is offline  
Reply


Similar Threads Similar Threads
[Hilfe] Citizens NPC's mit gleichen Namen
10/09/2011 - Minecraft - 5 Replies
Hey, ich hab nen Problem mit Citizens auf meinen Nitrado Server. Und zwar ist es so, wenn ich NPC's gleich nenne, also zb Wache, dann glitchen die alle zu einer Position nach einer gewissen Zeit, heißt sie stehen alle ineinander. War bei der 1.1.1 noch nicht so, dann auf 1.1.2 upgedatet,seitdem ist es so. Auch downgraden hat da komischerweise nichts mehr genutzt. Außerdem sind zumindest die Guards vorm Glitchen nicht mehr funktionstüchtig,dh sie greifen keine Monster mehr an und man kann sie...
[Tipp] Gleichen Namen !
09/10/2010 - S4 League - 8 Replies
Hallo Liebe Community ! Ich mache mein ersten Richtigen post und hoffe es gefällt euch ;) Deutsch Also ich kenne nen Trick das man einen Namen 2x nehmen kann also Z.B. du und nen Kumpel wollt nen Gleichen namen das wird dann kein Problem ! How To : Ihr sucht euch einen namen aus darin muss aber ein "L" enthalten sein !
Frage zu mehreren Accs auf dem gleichen namen
12/12/2008 - World of Warcraft - 3 Replies
Hiho :> und zwar hab ich vllt. wieder vor mit wow anzufangen ( jaja die sucht :> aufhören ist leicht nicht wieder anfangen hingegen schwer, wieso denn auf lebensqualität verzichten :D). Ich hab in vergangenheit relativ oft aufgehört und wieder angefangen. ( hab die accs immer vertickt, und immer selber glvlt und die accs laufen alle auf meine richtigen daten). Nun sieht es so aus ,dass ca. 4 Accs auf meinen namen laufen wovon einer ALLE daten hat inklusiver Persokopie. ( die andren...



All times are GMT +1. The time now is 08:51.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.