none
ListView Objekten eindeutige Attribute zuweisen und danach aufrufen? RRS feed

  • Frage

  • Guten Abend/Nacht,

    zerbreche mir gerade den Kopf aus folgenden Gründen...

    Hab ein ListView welches ich mit Button Klick füllen will, es soll ein erneutes Fenster nach klicken des Buttons erscheinen welches bestimmte Dinge abfragte wie z.B Computer Name, Ip Adresse usw... 

    Anschließend will ich das Objekt erstelen das funktioniert auch. Angenommen ich habe jetzt zwei Objekte erstellt und im ListView dargestellt, das eine mit dem Namen "A" und das andere mit dem Namen "B". Was ich jetzt erreichen will ist folgendes, ich will auf das Objekt "A" klicken und davor definierten Sachen rechts in Labels anzeigen.

    Das ganze soll später mit einer SQL Datenbank funktionieren, aber zuerst will ich es so gebacken bekommen. 

    Hier noch ein Bild hoffe ihr könnt es euch vorstellen. Will danach so viele Objekte (im ListView) wie möglich erstellen können. Doch derzeit weiß ich einfach nicht wie ich sie erstellen soll, wie ich sie deklariere und ihnen eindeutige Namen zuweise damit ich sie auseinadner halten kann.


    Mit freundlichen Grüßen

    Donnerstag, 3. Oktober 2013 19:43

Antworten

  • Zuerst einmal ein großes Dankeschön! Du bist im Forum unterwegs und hilfst Leuten, ist ja das 

    schon mehr als sozial. Aber dann noch Extra eine "Anwendung" zu schreiben und denn Source Code

    zu posten ist mehr als sozial :-)

    Danke, es macht mir einfach Spaß :)

    Hätte da noch ein paar fragen:

    Sucht er mit 

    dic.ContainsKey

    das komplette Dict durch? 

    Genau, es werden alle Einträge durchsucht. Du kannst dir das Dictionary wie einen Aktenschrank vorstellen. Jede Akte darin hat einen Namen. In unserem Fall muss dieser einzigartig sein. In den eigentlichen Akten sind dann die Objekte drinn. Jede Akte ist gleich aufgebaut. Ist also vom selben Typ.

    Mir ist nicht ganz klar wie er die Daten der Person wieder findet, muss man das nicht mit 

    dem Indexer machen? Du hast es ja in deinem Fall nicht, und was sagst du ihm wenn du das Objekt Person auf "null" setzt? 

    Person result = null;

    Auf die Elemente eines normalen Arrays kann über eine Zahl (Indexer) zugegriffen werden. Dort sind die Zahlen auch einzigartig (und beginnen bei 0). Beim Dictionary hat jedes Element ein anderes Objekt zum identifizieren. Bei und sind es Strings.

    Beim auslesen erstelle ich ersteinmal eine "Person". Dieser müsste ich garnichts zuweisen, weil TryGetValue den Parameter als out haben möchte. Mehr dazu siehe hier.
    Auf jeden Fall wird das Objekt an die Methode übergeben und wenn die Person gefunden wurde werden die Daten in diesem Objekt zurück gegeben.

    Und noch ganz wichtig, wie müsste man denn Code erweitern das man pro neuen Eintrag ein ListViewItem in einem ListView mit dem Namen von der Persone z.B "Hans" anlegt?

    Daten von "Hans" sollten mit einem Klick auf das ListViewitem "Hans" so wie bei der Suchfunktion wieder eingelesen werden? Hab mich schon mit dem Indexer gespielt, aber du hast es ja auch ohne geschafft gg*

    Am schönsten wäre es natürlich, wenn man anstelle des Dictionaries die Daten direkt aus der Listview heraus bekommt.
    Nun gibt es auch die Möglichkeit die ListView direkt mit dem Dictionary zu verknüpfen, was ich hier favorisiere. (Beispiel) Da die ListView das Standartmäßig nicht unterstützt ist das aber mit einiger Arbeit verbunden.

    Nun gibt es noch die Möglichkeit das Dictionary weg zu lassen und nur auf die Elemente der ListView zuzugreifen. Ein kurzes Beispiel dazu folgt. Ich habe das Grundgerüst aus dem Beispiel mit dem Dictionary verwendet.

            private void btnAdd_Click(object sender, EventArgs e)
            {
                //ListViewItem erzeugen und zur ListView hinzufügen
                ListViewItem lvi = new ListViewItem();
                lvi.Text = tbAddName.Text;
                lvi.SubItems.Add(new ListViewItem.ListViewSubItem() { Text = nudAddAccountBalance.Value.ToString(), });
                lvi.SubItems.Add(new ListViewItem.ListViewSubItem() { Text = tbAddCity.Text, });
                listView1.Items.Add(lvi);
            }

    und das Auslesen:

            private void btnSearch_Click(object sender, EventArgs e)
            {
                //Text des 1. Items, Auch in SubItems Suchen, Index des ersten, zu suchenden Items, Item muss dem Suchwort 1 zu 1 entsprechen
                ListViewItem lvi = listView1.FindItemWithText(tbSearchName.Text, false, 0, false);
                tbResultName.Text = lvi.Text;
                nudResultAccountBalance.Value = decimal.Parse(lvi.SubItems[1].Text);
                tbResultCity.Text = lvi.SubItems[2].Text;
            }

    Das Abfragen läuft unter nicht-Beachtung der Groß-Kleinschreibung. Auch wenn die Spalten umgetauscht werden, bleiben die Indexer der Items immer gleich.

    Das 1. SubItem entspricht dem Text des Items selbst.

    Die 3. und wohl unschönste Variante ist, alles was man mit dem Dictionary macht auch mit der ListView zu tun. Man hat also alle Daten zweimal. Darum erkläre ich das hier auch nicht weiter.

    Wäre super wenn du mir diese Fragen noch beantworten könntest, Mfg! 

    Ich gebe mein bestes ;)


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert XxDeadLiinexXx Dienstag, 15. Oktober 2013 15:50
    Donnerstag, 10. Oktober 2013 19:48
    Moderator

Alle Antworten

  • Hallo,
    ich nehme mal an, das du mit Windows Forms arbeitest. In WPF würde ich das über Datenbindungen lösen.

    Im SelectedIndexChanged-Eventhandler kannst du auf die Änderung einer Selektierung ändern. Die SelectedItems-Eigenschaft enthält eine Liste der markierten Elemente.

            private void listView1_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (listView1.SelectedItems != null && listView1.SelectedItems.Count > 0)
                {
                    label1.Text = listView1.SelectedItems[0].Text.ToString();
                    label2.Text = listView1.SelectedItems[0].SubItems[1].Text.ToString();
                }
            }

    In diesem Code werden den 2 Labels die Texte des Items (+SubItems) ausgegeben.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Donnerstag, 3. Oktober 2013 21:25
    Moderator
  • Hallo,

    zusätzlich zu Koopakillers Antwort würde ich noch

    ListView.MultiSelect = false; 

    machen, dann bist du auf der Sicheren Seite, dass der Benutzer nur ein Element in der ListView auswählen kann.


    Freitag, 4. Oktober 2013 06:11
  • Ok erstmal Danke! 

    Wie kann ich bei der erklärten Methode von oben:

       private void listView1_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (listView1.SelectedItems != null && listView1.SelectedItems.Count > 0)
                {
                    label1.Text = listView1.SelectedItems[0].Text.ToString();
                    label2.Text = listView1.SelectedItems[0].SubItems[1].Text.ToString();
                }
            }

    Sachen hinzufügen bei SubItems? Hab eine Klasse Namens Computer, dort steht alles drinnen IP Adresse, Name usw. Wenn ich jetzt ein neues Computer Objekt mit:

    Computer pc = new Computer();

    pc.Computername = "Test";

    pc.IpAdressse = "12.12.12.12"; usw....

    wie kann ich dann die Eigenschaften aus der Klasse auf jedes einzelne ListView zuweisen? 

    Und wie deklariere ich sie? Ich spreche das erste objekt ja mit "PC" an. Kann doch im veröffentlichten Programm nicht denn Code auf z.B "Computer pc2 = new Computer" ändern. 

    Grüße!

    Freitag, 4. Oktober 2013 15:59
  • Ich verstehe nicht so ganz, was du meinst.

    Eine ListView kann mehrere Elemente darstellen. Du kannst nun also einfach ein neues ListViewItem erstellen, diesem die Text- und SubItems-Eigenschaft zuweisen und das Objekt dann der ListView hinzufügen.

                ListViewItem lvi = new ListViewItem();
                lvi.Text = "Item";
                lvi.SubItems.Add("SubItem 1");
                lvi.SubItems.Add("SubItem 2");
                lvi.SubItems.Add("SubItem 3");
                listView1.Items.Add(lvi);

    Vielleicht fehlt dir aber auch das Wissen über Arrays und Listen!?
    http://msdn.microsoft.com/de-de/library/9ct4ey7x.aspx


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Freitag, 4. Oktober 2013 16:11
    Moderator
  • Danke erstmal für denn Code ! :D

    Ich will bei jedem Button klick ein neues Objekt erstellen. In dem Fall Computer mit:

    Computer pc = new Computer();

    pc.Computername = "Test";

    pc.IpAdressse = "12.12.12.12"; usw...

    Und es soll aber sozusagen unendlich viele werden. Die Werte sollen sich dann während dem Betrieb ändern. 

    Doch auf die oben erstellt Instanz kann ich nur mit "pc" ansprechen. Wenn ich jetzt eine zweite Instanz erstellen will wie z.B. pc2, wie würde das dann ausschauen? Klar es würde gleich wie oben aussehen nur statt "pc" würde man "pc2" schreiben, aber gibt es keine Methode wie ich z.B "pc2" anlege weil "pc" schon existiert? Ich kann ja im Laufenden Betrieb nicht denn Code umschreiben und aus "pc" (da er schon existiert) "pc2" reinschreiben...

    Wisst ihr jetzt was ich meine? 

    Hab ein C# Buch und dort gibt es die Klasse Typ. Man erstellt 2 Instanzen von Typ, eine hatte denn Namen Tim und eine Tom. Es wurden Namen und Kontostand usw. statisch festgelegt. Doch man musste sie auch zuerst fix deklarieren, ich will es aber dynamisch machen. Wenn der User sagt neuer Computer dann wird mit dem Code eine neue Instanz von "Computer" angelegt. Weiß ja im vorhinein nicht wie viele Computer der User Zuhause hat :-)

    Grüße!


    Sonntag, 6. Oktober 2013 09:17
  • Vielleicht fehlt dir aber auch das Wissen über Arrays und Listen!?

    http://msdn.microsoft.com/de-de/library/9ct4ey7x.aspx

    Arrays sind eine Art Liste von Elementen des gleichen Typs. Eine List<T> oder Dictionary<TKey,TValue> sind spezielle Typen, welche es ermöglichen Dynamisch Elemente hinzuzufügen. Man angenommen wir wollen 3 Zahlen zur Liste hinzufügen und am Ende die 2. Zahl um 1 Erhöhen. Dann könnte das so gehen:

    List<int> list = new List<int>();//Liste deklarieren und erstellen
    list.Add(12);//Elemente hinzufügen
    list.Add(8);
    list.Add(17);
    list[1] = list[1] + 2;//Element an 2. Position abrufen, 2 dazu addieren und wieder an das Element zurück geben.

    Durch die eckigen Klammern (Indexer) kannst du auf die verschiedenen Elemente zugreifen.

    Nichts anderes ist die Items-Auflistung der ListView.
    Du musst halt nur eine Liste von deinem Typ erstellen und diese dann auf die gleiche Art und Weise benutzen.

    Tim und Tom haben in diesem Fall also nur die Nummern 0 und 1, mit denen wir sie aus dem Array (bzw. der Liste) wieder abrufen können.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Sonntag, 6. Oktober 2013 10:19
    Moderator
  • Vielleicht fehlt dir aber auch das Wissen über Arrays und Listen!?

    http://msdn.microsoft.com/de-de/library/9ct4ey7x.aspx

    Arrays sind eine Art Liste von Elementen des gleichen Typs. Eine List<T> oder Dictionary<TKey,TValue> sind spezielle Typen, welche es ermöglichen Dynamisch Elemente hinzuzufügen. Man angenommen wir wollen 3 Zahlen zur Liste hinzufügen und am Ende die 2. Zahl um 1 Erhöhen. Dann könnte das so gehen:

    List<int> list = new List<int>();//Liste deklarieren und erstellen
    list.Add(12);//Elemente hinzufügen
    list.Add(8);
    list.Add(17);
    list[1] = list[1] + 2;//Element an 2. Position abrufen, 2 dazu addieren und wieder an das Element zurück geben.

    Durch die eckigen Klammern (Indexer) kannst du auf die verschiedenen Elemente zugreifen.

    Nichts anderes ist die Items-Auflistung der ListView.
    Du musst halt nur eine Liste von deinem Typ erstellen und diese dann auf die gleiche Art und Weise benutzen.

    Tim und Tom haben in diesem Fall also nur die Nummern 0 und 1, mit denen wir sie aus dem Array (bzw. der Liste) wieder abrufen können.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Moin, 

    Ok danke des is mir klar! :-) 

    Glaub wir reden aneinander vorbei, Tim und Tom mussten zuerst mit:

    Typ Tim = new Typ();

    Instanziert werden. Angenommen ich will jetzt einen Button namens "Neuer Typ" erstellen, der einen neuen Typen anlegen soll z.B. Heinz, wie müsste der Code aussehen das ich Heinz dann ansprechen kann mit z.B. Heiz.Kontostand = 100;

    Kann im Code ja nirgends Heinz hinterlegen, da ich zu dieser Zeit nichtmal weiß das er Heinz heisst, da es der User ja erst eingeben muss. 

    Ich würde ja gerne eine Textbox machen wo man denn Namen reinschreibt und dann könnte ich ja sagen:

    Typ this.txtbox1.text = new Typ();

    aber das funktioniert nicht, weisst du jetzt wie ich meine? 

    Gruß!


    Montag, 7. Oktober 2013 15:25
  • Also entweder reden wir wirklich extremst aneinander vorbei, oder aber ich schaffs nicht vernünftig zu erklären.

    Du hast schon recht, das man nicht einfach "Heinz" erstellen kann. Ich habe nochmal einen Beispielcode mit dem Dictionary angelegt. Dieser ist jetzt etwas komplexer und sollte eigentlich zeigen, wie es geht.

    Hier erstmal meine Testform:

    Und das ist der Codebehind:

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
    
            //Die Schlüssel sind die Namen in Kleinbuchstaben. Es geht natürlich auch mit Groß- und Kleinschreibung. Dann wird aber bei "heinz" "Heinz" nicht gefunden
            Dictionary<string, Person> dic = new Dictionary<string, Person>();//Das Dictionary mit den einzelnen Personen
    
            private void btnAdd_Click(object sender, EventArgs e)
            {
                if (dic.ContainsKey(tbAddName.Text.ToLower()))
                    MessageBox.Show("Diese Person wurde schon eingetragen", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);//Person schon eingetragen, Schlüssel müssen eindeutig sein
                else
                {
                    this.dic.Add(tbAddName.Text.ToLower (), new Person()//neue Person erzeugen und zum Dictionary hinzufügen
                    {
                        Name = tbAddName.Text,
                        AccountBalance = nudAddAccountBalance.Value,
                        City = tbAddCity.Text,
                    });
                }
            }
    
            private void btnSearch_Click(object sender, EventArgs e)
            {
                Person result = null;
                if(this.dic.TryGetValue (tbSearchName .Text.ToLower() , out result ))
                {
                    //result enthält die Daten zur Person.
                    tbResultName.Text = result.Name;//Werte ausgeben
                    tbResultCity.Text = result.City;
                    nudResultAccountBalance.Value = result.AccountBalance;
                }
                else
                {
                    MessageBox.Show("Diese Person existiert nicht.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);//Person nicht gefunden
                }
            }
        }
    
        class Person
        {
            public string Name { get; set; }
            public decimal AccountBalance { get; set; }
            public string City { get; set; }
        }
    PS: In die orangenen Felder kann man Werte eingeben.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.


    Montag, 7. Oktober 2013 16:08
    Moderator
  • Zuerst einmal ein großes Dankeschön! Du bist im Forum unterwegs und hilfst Leuten, ist ja das 

    schon mehr als sozial. Aber dann noch Extra eine "Anwendung" zu schreiben und denn Source Code

    zu posten ist mehr als sozial :-)

    Hätte da noch ein paar fragen:

    Sucht er mit 

    dic.ContainsKey

    das komplette Dict durch? 

    Mir ist nicht ganz klar wie er die Daten der Person wieder findet, muss man das nicht mit 

    dem Indexer machen? Du hast es ja in deinem Fall nicht, und was sagst du ihm wenn du das Objekt Person auf "null" setzt? 

    Person result = null;

    Und noch ganz wichtig, wie müsste man denn Code erweitern das man pro neuen Eintrag ein ListViewItem in einem ListView mit dem Namen von der Persone z.B "Hans" anlegt?

    Daten von "Hans" sollten mit einem Klick auf das ListViewitem "Hans" so wie bei der Suchfunktion wieder eingelesen werden? Hab mich schon mit dem Indexer gespielt, aber du hast es ja auch ohne geschafft gg*

    Wäre super wenn du mir diese Fragen noch beantworten könntest, Mfg! 

    EDIT: !!!!

    Hab es mit dem ListView geschafft, doch das einzige Problem was offen bleibt, ist wie ich das Item lösche und gleich die damit eingegebenen Daten lösche :-S

    Donnerstag, 10. Oktober 2013 17:32
  • Zuerst einmal ein großes Dankeschön! Du bist im Forum unterwegs und hilfst Leuten, ist ja das 

    schon mehr als sozial. Aber dann noch Extra eine "Anwendung" zu schreiben und denn Source Code

    zu posten ist mehr als sozial :-)

    Danke, es macht mir einfach Spaß :)

    Hätte da noch ein paar fragen:

    Sucht er mit 

    dic.ContainsKey

    das komplette Dict durch? 

    Genau, es werden alle Einträge durchsucht. Du kannst dir das Dictionary wie einen Aktenschrank vorstellen. Jede Akte darin hat einen Namen. In unserem Fall muss dieser einzigartig sein. In den eigentlichen Akten sind dann die Objekte drinn. Jede Akte ist gleich aufgebaut. Ist also vom selben Typ.

    Mir ist nicht ganz klar wie er die Daten der Person wieder findet, muss man das nicht mit 

    dem Indexer machen? Du hast es ja in deinem Fall nicht, und was sagst du ihm wenn du das Objekt Person auf "null" setzt? 

    Person result = null;

    Auf die Elemente eines normalen Arrays kann über eine Zahl (Indexer) zugegriffen werden. Dort sind die Zahlen auch einzigartig (und beginnen bei 0). Beim Dictionary hat jedes Element ein anderes Objekt zum identifizieren. Bei und sind es Strings.

    Beim auslesen erstelle ich ersteinmal eine "Person". Dieser müsste ich garnichts zuweisen, weil TryGetValue den Parameter als out haben möchte. Mehr dazu siehe hier.
    Auf jeden Fall wird das Objekt an die Methode übergeben und wenn die Person gefunden wurde werden die Daten in diesem Objekt zurück gegeben.

    Und noch ganz wichtig, wie müsste man denn Code erweitern das man pro neuen Eintrag ein ListViewItem in einem ListView mit dem Namen von der Persone z.B "Hans" anlegt?

    Daten von "Hans" sollten mit einem Klick auf das ListViewitem "Hans" so wie bei der Suchfunktion wieder eingelesen werden? Hab mich schon mit dem Indexer gespielt, aber du hast es ja auch ohne geschafft gg*

    Am schönsten wäre es natürlich, wenn man anstelle des Dictionaries die Daten direkt aus der Listview heraus bekommt.
    Nun gibt es auch die Möglichkeit die ListView direkt mit dem Dictionary zu verknüpfen, was ich hier favorisiere. (Beispiel) Da die ListView das Standartmäßig nicht unterstützt ist das aber mit einiger Arbeit verbunden.

    Nun gibt es noch die Möglichkeit das Dictionary weg zu lassen und nur auf die Elemente der ListView zuzugreifen. Ein kurzes Beispiel dazu folgt. Ich habe das Grundgerüst aus dem Beispiel mit dem Dictionary verwendet.

            private void btnAdd_Click(object sender, EventArgs e)
            {
                //ListViewItem erzeugen und zur ListView hinzufügen
                ListViewItem lvi = new ListViewItem();
                lvi.Text = tbAddName.Text;
                lvi.SubItems.Add(new ListViewItem.ListViewSubItem() { Text = nudAddAccountBalance.Value.ToString(), });
                lvi.SubItems.Add(new ListViewItem.ListViewSubItem() { Text = tbAddCity.Text, });
                listView1.Items.Add(lvi);
            }

    und das Auslesen:

            private void btnSearch_Click(object sender, EventArgs e)
            {
                //Text des 1. Items, Auch in SubItems Suchen, Index des ersten, zu suchenden Items, Item muss dem Suchwort 1 zu 1 entsprechen
                ListViewItem lvi = listView1.FindItemWithText(tbSearchName.Text, false, 0, false);
                tbResultName.Text = lvi.Text;
                nudResultAccountBalance.Value = decimal.Parse(lvi.SubItems[1].Text);
                tbResultCity.Text = lvi.SubItems[2].Text;
            }

    Das Abfragen läuft unter nicht-Beachtung der Groß-Kleinschreibung. Auch wenn die Spalten umgetauscht werden, bleiben die Indexer der Items immer gleich.

    Das 1. SubItem entspricht dem Text des Items selbst.

    Die 3. und wohl unschönste Variante ist, alles was man mit dem Dictionary macht auch mit der ListView zu tun. Man hat also alle Daten zweimal. Darum erkläre ich das hier auch nicht weiter.

    Wäre super wenn du mir diese Fragen noch beantworten könntest, Mfg! 

    Ich gebe mein bestes ;)


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert XxDeadLiinexXx Dienstag, 15. Oktober 2013 15:50
    Donnerstag, 10. Oktober 2013 19:48
    Moderator
  • Hi Zusammen,

    auch bei Windows Forms kann man Databinding Verwenden und sollte es auch.

    Hier ein Beispiel wie du eine Master/Detail Ansicht erstellen kannst. Der Code für einen SQL zugriff ist auch enthalten, denn sollte man aber besser in eine eigene Klasse machen z.B. mit dem Reposity Patter.

    Wenn du für den Computer eine Klasse erstellst (am besten mit dem IPropertyChange) und dazu eine Klasse mit Passender Liste. Kannst du die Master/Detail Ansicht auch vom Studio Erstellen lassen.

    Wenn du Oben unter Daten Datenquelle hinzufügst auswählst bekommst du mehrere Möglichkeiten, hier kannst du dann Objekt auswählen. Dann durch den TreeView Navieren bis du dein Objekt mit der Liste findest und auswählen.

    Dann bekommst du ein neues Fenster im Studio mit Datenquelle, wenn der Tab mit der Form aktiv ist, kannst du die Datenquelle auf das Form ziehen über das die Combobox bei den Datenquellen kannst du dann die Detail Ansicht auswählen und wenn du diese auf das gleiche Form ziehst hast du schon direkt eine Verbindung zwischen den Details. Wenn in der Liste ein Objekt ausgewählt wird erscheint es direkt in der Detail Ansicht.

    Im LoadEvent must/kannst du dann noch die Daten Laden und und der DataSource zu Ordnen.

    Hierzu gibt es auch einen Artikel in der MSDN, den hab ich jetzt auf die schnelle nicht gefunden nur den hier.  

    Wenn du es ein paar mal gemacht hat bist du damit wahrscheinlich schneller als ich den Beitrag geschrieben habe.

    MFG

    Björn

    Donnerstag, 10. Oktober 2013 20:42
  • Super, Vielen Dank wead mich einlesen!!! 

    Mit freundlichen Grüßen!

    Dienstag, 15. Oktober 2013 15:50