Hallo zusammen, ich habe ein Problem. Ich bin dabei ein Backup Programm zu programmieren. Ich erstelle einen Auftrag, den ich in einer XML Datei speichere. Den Auftrag erstelle ich mit TreeViews, in der ich eine Art Windows Explorer erstelle - Dies funktioniert auch ohne Probleme.
Mein Problem ist nun wenn ich diesen Auftrag bearbeiten will und ich mehrere Quellen angegeben habe. Übergebe die Quellen in einem String z.B "D:\\Eigene Bilder\Urlaub|D:\\Eigene Bilder\Familie".
Dann lasse ich mir meinen TreeView aufbauen. Mit einer Quelle funktioniert das wunderbar. Sobald ich aber mehrere Quellen habe baut er mir den Node Eigene Bilder 2 mal auf (oder mehrmals, je nach dem wie oft der Ordner vorkommt)
Beispiel:
C:\
D:\
Eigene Dokumente\
Eigene Musik\
Eigene Bilder\
Fotos\
Arbeit\
Urlaub\ (wird gecheckt)
Familie\
Fotos\
Arbeit\
Urlaub\
Familie\ (wird gecheckt)
...
Habe schon versucht abzufragen ob der Node schon existiert, trotzdem krieg ich es nicht hin.
Hier ist mein Code, vielleicht habt ihr eine ganz andere Idee wie ich den TreeView aufbauen kann:
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:
| public Form3(werte) { drives_Src(source); (ruft Funktion zum Aufbau des TreeViews auf) }
private void drives_Src(String source) { TreeNode node = new TreeNode(); foreach (string drive in Directory.GetLogicalDrives()) { try { node = treeView1.Nodes.Add(drive);
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(node.FullPath, node, NodeSource, true); node.Expand(); } else { TreeNode dummy = new TreeNode(); dummy = node.Nodes.Add(""); dummy.ImageKey = "folder"; } } catch { } } } private void eNode_Src(String Src, TreeNode node, String arrSrc, Boolean fehler) { try { foreach (string dir in Directory.GetDirectories(Src)) { try { TreeNode dir_t = new TreeNode(); string[] ordnername = dir.Split('\\'); int i = ordnername.Length - 1; dir_t = node.Nodes.Add(ordnername[i].ToString());
CallRecursive(treeView1); string[] sources = arrSrc.Split('|'); foreach (string SrcLong in sources) { Boolean vorhanden = false; foreach (TreeNode element in openNodes) { if (SrcLong == element.FullPath && element.FullPath == dir_t.FullPath) { MessageBox.Show(SrcLong); fehler = false; dir_t.Checked = true; vorhanden = true;
TreeNode dummy = new TreeNode(); dummy = dir_t.Nodes.Add(""); dummy.ImageKey = "folder"; } } if (vorhanden == false) { if (dir_t.FullPath == SrcLong) { fehler = false; dir_t.Checked = true;
TreeNode dummy = new TreeNode(); dummy = dir_t.Nodes.Add(""); dummy.ImageKey = "folder"; } else { if (SrcLong.Contains(dir_t.FullPath)) { string strdir = dir + "\\"; eNode_Src(strdir, dir_t, SrcLong, fehler); dir_t.Expand(); fehler = false; } else { TreeNode dummy = new TreeNode(); dummy = dir_t.Nodes.Add(""); dummy.ImageKey = "folder"; } } } } } catch { } } foreach (string file in Directory.GetFiles(Src)) { try { TreeNode file_t = new TreeNode(); string[] filename = file.Split('\\'); int i = filename.Length - 1; file_t = node.Nodes.Add(file.ToString(), filename[i].ToString());
string[] sources = arrSrc.Split('|'); foreach (string SrcLong in sources) { if (file_t.FullPath == SrcLong) { fehler = false; this.treeView1.SelectedNode = file_t; this.treeView1.SelectedNode.Checked = true; } } } catch { } } } catch { } } |