Autor Beitrag
sun30friend
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 07.02.12 12:25 
Hallo Zusammen,

zuerst einmal ein riesen Lob an das Forum hier :)
Leider habe ich bei der Boardsuche nicht die passende Antwort gefunden und hoffe das Ihr mir helfen könnt.

Zu meinem Problem.

ich übergebe mittels einer "DataExchange" Klasse Daten von einem Form an das andere.

Hauptform:
----------
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
 public void btn_usersearch_Click(object sender, EventArgs e)
        {

            string username = Interaction.InputBox("Username?""Active-Directory-User-Search""Lastname");

            DirectoryEntry domain = new System.DirectoryServices.DirectoryEntry("LDAP://dc=some, dc=entry");
            DirectorySearcher adsearcher = new System.DirectoryServices.DirectorySearcher(domain);
            adsearcher.Filter = string.Format("(&(sn={0}))", username);
            SearchResultCollection adresult = adsearcher.FindAll();


            if (adresult.Count == 0)
            {
                MessageBox.Show("Cannot find User in Active Directory.".ToString());
            }

            else if (adresult.Count > 1)
            {
                string members = (adresult[0].Properties["cn"][0].ToString());
                   foreach (SearchResult results in adsearcher.FindAll())
                {
                      foreach (var member in results.Properties["cn"])
                        {
                            string memberResult = member as string;

                                if (memberResult != null)
                                    {

                            // Übergabe an ad_userabfrage Form //
                            DataExchange userabfrage_form = new DataExchange();
                            userabfrage_form.Daten = (memberResult);
                            Form uebergabe = new ad_userabfrage(userabfrage_form);
                            uebergabe.Show();
                   
                        }
                    }

                }  

            }



ad_userabfrage Form:
--------------------

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public ad_userabfrage(DataExchange some)
        {
            InitializeComponent();
            this.listview.Items.Add(some.Daten);
        }


Prinzipiell funktioniert das ganze auch. Die Daten kommen aus dem Hauptform und werden übernommen, aber da das ergebnis aus mehreren Einträgen besteht,
macht er mir für jedes Ergebnis ein eigenes Form auf und schreibt mir jeweils nur einen Eintrag in das ListView

leite ich aber das ergebnis mit listview.Items.Add(memberResult) in eine Listview des Hauptforms, dann funktioniert es.

Warscheinlich sehe ich einfach den Wald vor lauter Bäumen nicht mehr.

Danke im Voraus.

LG
Flo

Moderiert von user profile iconKha: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 07.02.12 16:37 
Hallo sun30friend :welcome:

da du die Form innerhalb mehrere Schleifen jedesmal erzeugst, ist das auch nicht verwunderlich.

Am besten, du deklarierst DataExchange.Daten als List<string> und fügst dann innerhalb der Schleifen die Daten (strings) der Liste hinzu. Und erst nach den Schleifen übergibst du die Daten an das Form und zeigst es an.
sun30friend Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 08.02.12 14:09 
ich bin zu doof..... wenn ich es in eine List eintragen lasse, dann bekomm ich es gar nicht mehr angezeigt....
sun30friend Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 08.02.12 14:21 
man sollte öffters füher fluchen....

Es läuft jetzt....

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
else if (adresult.Count > 1)
            {
                DataExchange userabfrage_form = new DataExchange();
                string members = (adresult[0].Properties["cn"][0].ToString());
                
                List<string> multimembers = new List<string>();
                   
                foreach (SearchResult results in adsearcher.FindAll())
                {
                      foreach (var member in results.Properties["cn"])
                        {
                            string memberResult = member as string;

                                if (memberResult != null)
                                    {
                                    
                                    multimembers.Add(memberResult);
                                    string multiresult = string.Join(",", multimembers.ToArray());

                                    userabfrage_form.Daten = multiresult;
                        }
                                
                    }

                }

                //Übergabe an ad_userabfrage Form
                Form uebergabe = new ad_userabfrage(userabfrage_form);
                uebergabe.Show();
            }

Danke für den Schubs in die richtige Richtung.

Wenn Ihr eine Idee habt wie man das sinnvoller oder schöner lösen kann, dann immer her damit

Gruß
Flo
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 08.02.12 15:24 
Hallo,

wie schon von mir geschrieben
Th69 hat folgendes geschrieben:

Am besten, du deklarierst DataExchange.Daten als List<string> ...

Dann kannst du direkt deine Variable 'multimembers' daran übergeben (ohne den Umweg über String.Join und ToArray gehen zu müssen).
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 08.02.12 15:38 
Zitat:
Dann kannst du direkt deine Variable 'multimembers' daran übergeben (ohne den Umweg über String.Join und ToArray gehen zu müssen


Mal abgesehen davon das die string.Join Zeile potentiell je Schleifendurchlauf aufgerufen wird wo einmal nach der Schleife absolut reichen würde.
sun30friend Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 08.02.12 15:55 
und wie mach ich das... ich glaub jetzt hab ich grad wirklich einen knoten im Gehirn.....