hehe^^
habs selber grade gemerkt -.-
so fehler passieren mir dauernd^^
wie kann man die datei überschreiben?
ist ja ein berechtigungsproblem weil noch auf die datei zugegriffen wird....
wenn ich einen neuen pfad angebe funktioniert es...
Hi..
hab ein programm das xml dateien in ein treeView einliest...
jetzt wollte ich einbinden, das wenn man eine spalte in der treeView anklickt.. dort ein neues element in der xml eingefügt wird... doch wenn ich nun die xml wieder speichern will kommt ein fehler...
Der Prozess kann nicht auf die Datei C:\Welt.xml zugreifen, da sie von einem anderen Prozess verwendet wird.
das programm sieht so aus..
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace WindowsApplication2
{
public partial class Form1 : Form
{
XmlDocument xmlDoc;
XmlNode root, node;
string Pfad = string.Empty;
public Form1()
{
InitializeComponent();
xmlDoc = new XmlDocument();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "xml files (*.xml)|*.xml";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
Pfad = openFileDialog1.FileName;
try
{
xmlDoc.Load(Pfad);
root = xmlDoc.DocumentElement;
}
catch
{
MessageBox.Show("Datei nicht lesbar");
return;
}
treeView1.Nodes.Clear();
ShowNode(null,Pfad);
treeView1.Nodes[0].ExpandAll();
}
private void ShowNode(TreeNode parent,string pfad)
{
TreeNode tn = parent;
XmlReaderSettings myset = new XmlReaderSettings();
myset.IgnoreWhitespace = true;
XmlReader xr = XmlReader.Create(pfad, myset);
while (xr.Read())
{
if (xr.NodeType == XmlNodeType.EndElement)
tn = tn.Parent;
else
{
if (xr.NodeType == XmlNodeType.Element)
{
if (tn == null)
tn = treeView1.Nodes.Add(xr.Name);
else
tn = tn.Nodes.Add(xr.Name);
}
if (xr.NodeType == XmlNodeType.Text)
{
tn.Text = tn.Text + ": " + xr.Value;
}
}
}
}
private void test(object sender, TreeNodeMouseClickEventArgs e)
{
Form2 dialog = new Form2();
if (dialog.ShowDialog() == DialogResult.OK)
{
node = root.SelectSingleNode (e.Node.FullPath.Substring (e.Node.FullPath.IndexOf ('\\')+1).Replace ('\\','/'));
node.AppendChild(xmlDoc.CreateElement("Hund")).InnerText = "123";
treeView1.Nodes.Clear();
xmlDoc.Save(Pfad); <<<<<<<<< hier ist der fehler
ShowNode(null, Pfad);
treeView1.Nodes[0].ExpandAll();
}
}
}
}
ah.. ok.. dankeschön^^
hab die ganze zeit versucht über treeView1.SelectedNode drauf zuzugreifen...
ist so ja noch viel besser 🙂
hi
habe ne xml datei eingelesen und als treeView ausgegeben...
wollte jetzt nach einem mausklick auf ein element das dieses als text ausgegeben wird...
bsp:
- Kontinent
- Europa
Fläche: 10500000
Einwohner: 718500000
wenn ich jetzt auf einwohner klicke soll "Einwohner: 718500000" ausgegeben werden
das event ist übrigens schon fertig.. möchte nur wissen wie ich auf den text zurgreifen kann...
danke für eure hilfe
ok.. soweit hab ich nicht gedacht.. mal gucken obs klappt....
hätte jetzt auch '%09' getippt oder sowas...
ich....
hab nen string in dem mehrere ' in verbindung mit , vorkommen....
es kommen auch noch mehrere ' oder , ohne verbindung zueinander drin vor...
jetzt möchte ich diese , durch tab ersetzen wenn sie in verbindung mit ' vorkommen....
wie kann ich das anstellen....
string zeile="' asdf','adf'jkll','adsf','asd,asd' "
zeile.Replace("\',\'","\'(Hier soll Tab hin)\'");
naja...
wollte mich mal bedanken für die lösungsvorschläge 🙂
hat mir weitergeholfen...
und die geschichte mit der kuchenteilung ist auch interessant....
da kann ich ja gleich goto verwenden 😄
Wollt ihr mich heut auf den Arm nehmen? Woanders meint jemand von Form wegen IDisposable ableiten zu müssen und du redest von goto - und das als Anfänger.
Das ist Rekursion.
ups^^
sry.. nciht richtig angeguckt 🙂
😜
hehe
hatte grade länger nicht mehr aktuallisiert^^
meinte den befehl der ersten antwort 🙂
🙂
:
kannst du mir den befehl bitte in nem kleinen beispiel unterbringen?
System.IO.Directory.GetFiles("pfad", "*.jpg", System.IO.SearchOption.AllDirectories)
private void Rename(DirectoryInfo dirInfo) { foreach (DirectoryInfo dirInfo2 in dirInfo.GetDirectories()) { foreach (FileInfo fileInfo in dirInfo2.GetFiles()) { fileInfo.Rename nach dirInfo2.Name ... } // Rekursion.. this.Rename(dirInfo2); } }
hmm.. da kann ich ja gleich goto verwenden 😁
😜
hehe
hatte grade länger nicht mehr aktuallisiert^^
meinte den befehl der ersten antwort 🙂
Hi...
ich möchte ein Programm schreiben das mit nach angabe eines ordners... alle jpg dateien so benennt, wie der ordner in dem sie sind...
bsp:
c:\test\hallo
dateien
hallo_00.jpg
hallo_01.jpg
nur das es auch sein kann das es noch andere ordner darin gibt...
c:\test\hallo\du
du_00
du_01
c:\test\hallo\du\da
da_00
usw 🙂
wie kann ich das realisieren....
ich möchte nicht für jeden ordner eine neue foreach schleife durchlaufen...
geht das überhaupt?
Bisherige Umsetzung :
foreach (System.IO.DirectoryInfo directory in dir.GetDirectories())
{ unterverzeichnis = System.IO.Path.Combine(path,directory.ToString());
i = 0;
Console.WriteLine("Pfad ist {0}" , unterverzeichnis);
foreach (System.IO.FileInfo file in directory.GetFiles("*.jpg"))
{
File.Move(file.FullName, (System.IO.Path.Combine(file.DirectoryName , unterverzeichnis.Substring
(unterverzeichnis.LastIndexOf('\\')+ 1)+ "_" + i+".jpg")));
i++;
}
}
hehe^^
danke...
aber habs selber rausgefunden bevor ich es hier gelesen hatte 🙂
aber habs genauso gemacht 🙂
this.dgv1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
pfad = dgv1.CurrentRow.Cells["Pfad"].Value.ToString() +"\\" +dgv1.CurrentRow.Cells["Name"].Value.ToString();
hallo
habe ein DataGridView mit daten gefüllt.
darunter zb. Pfad und Dateiname
ich möchte jetzt das wenn ich iwo auf eine row klicke, Pfad und Dateiname ausgelesen werden und zusammengeführt...
wie kann ich das anstellen?
dgv1.CurrentRow.Cells["Pfad"].Selected = true;
Clipboard.SetDataObject(this.dgv1.GetClipboardContent().);
pfad = Clipboard.GetText();
dgv1.CurrentRow.Cells["Pfad"].Selected = false;
dgv1.CurrentRow.Cells["Name"].Selected = true;
Clipboard.SetDataObject(this.dgv1.GetClipboardContent().);
pfad +="\\"+Clipboard.GetText();
dgv1.CurrentRow.Cells["Name"].Selected = false;
jetzt hab ich aber das problem das man auf der DataGridView beliebige Zellen anwählen kann die dann auch mit markiert werden...
kann mir einer sagen wie das umgangen wird?
das immer nur diese 2 zellen markiert werden`?
hab mich mal ein bisschen eingelesen in notificationservice...
das lass ich lieber 🙂
ich mach es jetzt erstmal auf eine billige art und weise...
bevor und nachdem ich mit meinem programm auf sql zugreife lass ich die datagrid erneuern...
immer wieder neu laden belastet das netz aber ganz schön...
ist im moment noch ein testprogramm.. soll aber später in ein größeres programm implementiert werden....
das wird dann probleme geben..
hatte aus testzwecken schon mit nem 2ten thread die abfrage alle 10 sekunden laufen lassen..
das hört sich schonmal gut an 🙂
aber auch iwie zu aufwendig... wie gesagt.. anfänger 😜
hmm.. naja... ich lass es erstmal so...
bin jetzt schon stolz auf meine leistung^^
wenn ich seh was für fragen hier gestellt werden die ich nach 3 tagen schon locker beantworten kann 😁
trotzdem danke 🙂
hmm.. gibt es keine möglichkeit sowas aus c# zu überwachen?
verwendetes Datenbanksystem: <bitte immer angeben> Microsoft Sql
Hi,
bin noch anfänger im programmieren und habe eine frage...
Ich habe ein programm in c# geschrieben das nach eingabe eines pfades alle informationen der dateien dieses ordners in einer sql datenbank auflistet.
Die Sql datenbank wird über ein DataGridView dargestellt...
Ist es möglich die DataGridView automatisch aktuallisieren zu lassen wenn sich was an der datenbank verändert hat?
Also nicht von meinem Programm aus sondern direkt an der Datenbank..
also iwie nen observer.. weiß nicht ob es in c# sowas gibt... kenne diese sprache erst seit 3 tagen
danke im voraus 🙂