none
listView Eintrag an form übergeben RRS feed

  • Frage

  • Schönen Sonntag zusammen,

    In meiner vorherigen Frage ginge es darum aus einer 2. Form die Daten in die Mainform in eine LV zu übernehmen. Ich habe es jetzt umgesetzt das auch alles in eine MySQL Datenbank scön gespeichert wird. Zu meiner Frage: 

    Wie ist es mir möglich eine Eintrag aus der LV anzuklicken und die 2.Form öffnet sich wieder so das txt boxen wieder mit den Daten gefüllt sind eine Art Kundenverwaltung? ... in meiner LV sind die daten garnicht erst anklickbar? 

    Liebe Grüße

    Sonntag, 12. Januar 2014 14:24

Antworten

  • Es gibt immer mehrere Wege. Die eine besteht wirklich darin die Infos alle einzeln zu übergeben. Du kannst aber auch deinen Konstruktor so umbauen, das er ein ListViewItem entgegen nimmt und dort erst die SubItems ausgewertet werden.

    Die wahrscheinlich beste Variante wäre aber Eigenschaften zu erstellen, welche auch Daten entgegen nehmen. Das entspricht eigentlich dem Weg des Konstruktors, nur das man diesen dafür nicht anpassen muss.

    Ich habe mal ein Beispiel erstellt. Das findest du hier:
    http://code-13.net/dl/2e49702d-f3e9-4ac3-be96-f1c0b1561578.zip
    Gucke dir aufmerksam den Code der beiden Formen an und versuche zu verstehen wie er funktioniert. Natürlich wird es aufwendiger, wenn du mehr Eigenschaften hast.
    Das Projekt funktioniert ab VS 2008.


    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 Cesa B Donnerstag, 16. Januar 2014 09:37
    Sonntag, 12. Januar 2014 17:36
    Moderator

Alle Antworten

  • Hallo,
    fange dazu das Click- (bzw. DoubleClick-) Event ab und überprüfe welches Element markiert wurde:
    private void listView1_Click(object sender, EventArgs e)
    {
        if(listView1.SelectedItems.Count !=1)//Kein Item markiert
            return ;
    
        var item = listView1.SelectedItems[0];//Item hohlen
    }
    Dann kannst du deinen Konstruktor der 2. Form anpassen:
    public Form2(string name, string lastname){
      this.InitialisizeComponent();
    
      tbName.Text = name;//Werte ausgeben
      tbLastname.Text = lastname;
    }
    Nun kannst du dem Konstruktor die Daten des Items übergeben. Diese werden dann in den TextBoxen ausgegeben. So sieht dann der Aufruf aus:
    Form2 frm = new Form2(item.SubItems[0], item.SubItems[1]);
    frm.ShowDialog();//Anzeigen
    Nach ShowDialog kannst du dann wieder die Daten des items zuweisen.



    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, 12. Januar 2014 15:11
    Moderator
  • Danke Tom für die schnelle Antwort, jedoch habe ich dazu mehrere Fragen: 

    Meine 2.Form besteht ja aus viel viel viel mehr Daten die muss ich alle im 2.Konstruktor unterbringen? die Form besteht aus bestimmt 12 Textboxen.

    Und das letztere in deinem Beispiel funktioniert bei mir nicht ganz so wie es dort steht

    LG 

    Sonntag, 12. Januar 2014 17:07
  • Es gibt immer mehrere Wege. Die eine besteht wirklich darin die Infos alle einzeln zu übergeben. Du kannst aber auch deinen Konstruktor so umbauen, das er ein ListViewItem entgegen nimmt und dort erst die SubItems ausgewertet werden.

    Die wahrscheinlich beste Variante wäre aber Eigenschaften zu erstellen, welche auch Daten entgegen nehmen. Das entspricht eigentlich dem Weg des Konstruktors, nur das man diesen dafür nicht anpassen muss.

    Ich habe mal ein Beispiel erstellt. Das findest du hier:
    http://code-13.net/dl/2e49702d-f3e9-4ac3-be96-f1c0b1561578.zip
    Gucke dir aufmerksam den Code der beiden Formen an und versuche zu verstehen wie er funktioniert. Natürlich wird es aufwendiger, wenn du mehr Eigenschaften hast.
    Das Projekt funktioniert ab VS 2008.


    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 Cesa B Donnerstag, 16. Januar 2014 09:37
    Sonntag, 12. Januar 2014 17:36
    Moderator
  • Danke Koopa ... super leicht verständlich aufgebaut :) Ich danke dir mal wieder 
    Donnerstag, 16. Januar 2014 09:38