Thema Datum  Von Nutzer Rating
Antwort
29.03.2011 20:47:06 partywelt
Solved
30.03.2011 15:17:47 Gast45309
NotSolved
30.03.2011 22:48:35 Gast80243
NotSolved
30.03.2011 23:27:40 partywelt
NotSolved
31.03.2011 20:23:30 Gast42765
NotSolved
31.03.2011 20:55:20 partywelt
NotSolved
31.03.2011 21:02:47 Gast10495
NotSolved
02.04.2011 23:17:04 partywelt
NotSolved
03.04.2011 10:15:33 Tom
NotSolved
04.04.2011 20:39:43 partywelt
NotSolved
Rot TreeView Windows Explorerstruktur
15.04.2011 14:56:11 Gast81756
NotSolved

Ansicht des Beitrags:
Von:
Gast81756
Datum:
15.04.2011 14:56:11
Views:
2514
Rating: Antwort:
  Ja
Thema:
TreeView Windows Explorerstruktur

Hallo zusammen, habe es mittlerweile mit Umwegen und Zwischenvariablen geschafft mein Problem zu erreichen

 

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Security;
using System.Security.Permissions;
using System.Security.Policy;
using System.Runtime.InteropServices;
using System.Collections;
using System.Data.SqlClient;
using System.Xml;
 
namespace WindowsFormsApplication1
{
    public partial class Form4 : Form
    {
        Hashtable treenodes = new Hashtable();
        ArrayList openNodes = new ArrayList();
        public Form4(string Src)
        {
            InitializeComponent();
            drives_Src(Src); 
            checkNodes(Src);
        }
 
        private void drives_Src(string source)
        {
            TreeNode node = new TreeNode();
              
            foreach (string drive in Directory.GetLogicalDrives())
            {
                try
                {
                    string NodeSrc = "";
                    Boolean fehler = true;
                    string NodeSource = "";
                    string[] sources = source.Split('|');
                    foreach (string strSource in sources)
                    {
                        string[] strNode = strSource.Split('\\');
                        string NodeSrctemp = strNode[0] + "\\";
                        if (drive == NodeSrctemp)
                        {
                            if (NodeSrctemp == NodeSrc)
                            {
                                NodeSource = NodeSource + "|" + strSource;
                                fehler = false;
                            }
                            else
                            {
                                NodeSrc = NodeSrctemp;
                                NodeSource = strSource;
                                fehler = false;
                            }
                        }
                    }
                    if (fehler == false)
                    {
                        eNode_Src(NodeSource,drive);
                    }
                    else
                    {
                        DriveType drive_type = GetDriveType(drive);
                        string[] strdrive = drive.Split('\\');
                        node = treeView1.Nodes.Add(drive);
 
                        switch (drive_type.ToString())
                        {
                            case "DRIVE_FIXED":
                                node.ImageKey = "drive";
                                node.SelectedImageKey = "drive";
                                break;
                            case "DRIVE_REMOTE":
                                node.ImageKey = "network";
                                node.SelectedImageKey = "network";
                                break;
                            case "DRIVE_CDROM":
                                node.ImageKey = "cdrom";
                                node.SelectedImageKey = "cdrom";
                                break;
                            default:
                                node.ImageKey = "drive";
                                node.SelectedImageKey = "drive";
                                break;
                        }
 
                        //Dummynodes einfügen
                        TreeNode dummy = new TreeNode();
                        dummy = node.Nodes.Add("");
                        dummy.ImageKey = "folder";
                    }
                }
                catch { }
            }
        } //Ende drives_Src()
 
        public enum DriveType
        {
            DRIVE_UNKNOWN = 0,
            DRIVE_NO_ROOT_DIR = 1,
            DRIVE_REMOVABLE = 2,
            DRIVE_FIXED = 3,
            DRIVE_REMOTE = 4,
            DRIVE_CDROM = 5,
            DRIVE_RAMDISK = 6
        } //Ende DriveType
 
        // Um heraus zu finden um was für ne laufwerksart es sich handelt...
        [DllImport("KERNEL32", EntryPoint = "GetDriveType")]
        public static extern DriveType GetDriveType(string sDrive);
 
        int i = 0;
 
        // TreeView Quelle
        private void eNode_Src(string SrcNodes, string drive)
        {
            TreeNode parentNode = null;
             
            string[] Sources = SrcNodes.Split('|');
            foreach (string Source in Sources)
            {
                TreeNode tmp = null;
                string SrcPart = "";
                string[] splittetSrc = Source.Split('\\');
                foreach (string SrcParted in splittetSrc)
                {
 
                    if (SrcPart == "")
                    {
                        SrcPart = SrcParted + "\\";
                        Boolean vorhanden = false;
 
                        foreach (DictionaryEntry node in treenodes)
                        {
                            if (node.Value.ToString() == SrcPart)
                            {
                                vorhanden = true;
                                parentNode = (TreeNode)node.Key;
                            }
                        }
 
                        if (vorhanden != true)
                        {
                            parentNode = treeView1.Nodes.Add(drive);
                            parentNode.Expand();
                            treenodes.Add(parentNode, drive);
                        }                   
                    }
                    else
                    {
                        SrcPart += SrcParted + "\\";
                        parentNode = tmp;
                    }
                    foreach (string dir in Directory.GetDirectories(SrcPart))
                    {
                        try
                        {
                            Boolean vorhanden = false;
                            TreeNode dir_t = new TreeNode();
                            TreeNode test = new TreeNode();
                            string[] ordnername = dir.Split('\\');
                            i = ordnername.Length - 1;
 
                            foreach (DictionaryEntry node in treenodes)
                            {
                                if (node.Value.ToString() == dir)
                                {
                                    vorhanden = true;
                                    if (Source.Contains(dir) && dir != Source)
                                    {
                                        parentNode.Nodes.Remove((TreeNode)node.Key);
                                        dir_t = parentNode.Nodes.Add(ordnername[i].ToString());
                                        this.treeView1.Sort();
                                        dir_t.Expand();
                                        dir_t.ImageKey = "folder";
                                        dir_t.SelectedImageKey = "folder";
                                        tmp = dir_t;
                                    }
                                }
                            }
                            if (vorhanden != true)
                            {
                                dir_t = parentNode.Nodes.Add(ordnername[i].ToString());
                                dir_t.Expand();
                                dir_t.ImageKey = "folder";
                                dir_t.SelectedImageKey = "folder";
                                if (Source.Contains(dir))
                                {
                                    tmp = dir_t;
                                }
                                treenodes.Add(dir_t, dir);
                            }
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Catch: " + ex.Message + " dir: " + dir);
                        }
                    }
                }
            }
        }//Ende treeView1 (Quelle)
 
        private void checkNodes(String SrcNodes)
        {
            string[] tmpSources = SrcNodes.Split('|');
            foreach (string Source in tmpSources)
            {
                //String Source vorbereiten
                string strTemp = "";
                string[] strSource = Source.Split('\\');
 
                foreach (string tmpStr in strSource)
                {
                    if (strTemp == "")
                    {
                        strTemp = tmpStr + "\\";
                    }
                    else
                    {
                        strTemp += "\\" + tmpStr;
                    }
                }
 
                // Hier werden die Nodes gecheckt
                CallRecursive(treeView1, strTemp);
            }
        }
 
        private void PrintRecursive(TreeNode treeNode, String Source)
        {
 
            if (treeNode.Text != "")
            {
                if (treeNode.FullPath == Source)
                {
                    treeNode.Checked = true;
                }
            }
 
            foreach (TreeNode tn in treeNode.Nodes)
            {
                PrintRecursive(tn, Source);
            }
        }
 
        // Call the procedure using the TreeView.
        private void CallRecursive(TreeView treeView, string Source)
        {
            TreeNodeCollection nodes = treeView.Nodes;
            foreach (TreeNode n in nodes)
            {
                PrintRecursive(n, Source);
            }
        }
    }
}

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
29.03.2011 20:47:06 partywelt
Solved
30.03.2011 15:17:47 Gast45309
NotSolved
30.03.2011 22:48:35 Gast80243
NotSolved
30.03.2011 23:27:40 partywelt
NotSolved
31.03.2011 20:23:30 Gast42765
NotSolved
31.03.2011 20:55:20 partywelt
NotSolved
31.03.2011 21:02:47 Gast10495
NotSolved
02.04.2011 23:17:04 partywelt
NotSolved
03.04.2011 10:15:33 Tom
NotSolved
04.04.2011 20:39:43 partywelt
NotSolved
Rot TreeView Windows Explorerstruktur
15.04.2011 14:56:11 Gast81756
NotSolved