Laden...
L
lnino myCSharp.de - Member
Innsbruck - Tirol Dabei seit 19.11.2010 24 Beiträge
Benutzerbeschreibung

Forenbeiträge von lnino Ingesamt 24 Beiträge

28.02.2012 - 23:31 Uhr

Hi an alle.

Ich würde gern für einen Test beim Form_load die Hintergrundfarbe eine Textbox ändern. Aber leider sehe ich die Änderung nicht. Nur die letzte Farbe.

tb.BackColor = Color.Blue;
            Application.DoEvents();
            System.Threading.Thread.Sleep(500);
            tb.BackColor = Color.Yellow;
            Application.DoEvents();

Wie kriege ich das hin, dass ich die Änderung mitbekomme und was ist der Grund dafür, dass ich das nicht sehe?

Vielen Dank.

12.12.2010 - 20:23 Uhr

Was mir dabei aber aufgefallen ist, dass es bei der Uhrzeit keine führenden Nullen gibt. Ist das normal, oder kann ich das irgendwie anpassen?

Es wird nämlich so dargestellt: 12:5:3 anstelle von 12:05:03

Hat von euch jemand für das obenstehende Problem mit den fehlenden führenden Nullen eine Erklärung? Ich komm da nicht dahinter.

P.s.: Werde mich anschließend an die saubere Gestaltung meines Codes machen. 😃

12.12.2010 - 20:16 Uhr

Vielen Dank.

Damit konnte ich mein Problem lösen.

12.12.2010 - 19:21 Uhr

Hi an alle.

Mein Programm soll Dateien von A nach B kopieren. Dies funktioniert auch wunderbar, nur kann ich währenddessen das Fenster nicht verschieben.

Ich habe mich im Forum schon etwas umgesehen und bin dabei auf Application.DoEvent() und BackgroundWorker gestossen.

Ich konnte aber nicht heraussfinden, wie ich diese verwende um meine Form verschieben zu können.

Kann mir jemand sagen wo ich das wie einbauen muss?

Hier ein symbolischer Auszug vom Code:

private void btTransfer_Click(object sender, EventArgs e)
{
   foreach (System.IO.FileInfo oFile in oFiles)
   {
      MyClient.UploadFile(Ziel+"\\"+oFile.Name, Quelle+"\\"+oFile.Name);
   }
}

12.12.2010 - 18:13 Uhr
DateTime aktuell = DateTime.Now;
string LogFile = "logfile.txt";

public void AppendLogFile(string sFilename, string sLines)
{
     StreamWriter myFile = new StreamWriter(sFilename, true);
     myFile.Write(sLines);
     myFile.Close();
}
aktuell = DateTime.Now;

AppendLogFile(LogFile, aktuell.Date.Day + "." + aktuell.Date.Month + "." + aktuell.Date.Year + "-" + aktuell.TimeOfDay.Hours + ":" + aktuell.TimeOfDay.Minutes + ":" + aktuell.TimeOfDay.Seconds + "TEST" + "\r\n");

Ist zwar noch immer unschön, aber funktioniert.

Was mir dabei aber aufgefallen ist, dass es bei der Uhrzeit keine führenden Nullen gibt. Ist das normal, oder kann ich das irgendwie anpassen?

Es wird nämlich so dargestellt: 12:5:3 anstelle von 12:05:03

12.12.2010 - 16:39 Uhr

Hi m0rius.

Danke für den Hinweis.

Habe nun vor dem schreiben in die Textdatei mittels....

aktuell = DateTime.Now

...die Uhrzeit aktualisiert.

12.12.2010 - 15:26 Uhr

Hi an alle.

Ich möchte ein Log meiner Applikation schreiben und dabei Zeilenweise den abgearbeiteten Befehl in eine Textdatei schreiben.

Die Funktion an sich funktioniert super, nur zeigt er mir in jeder Zeile die gleiche Uhrzeit an. Wie kann ich die aktualisieren, oder was habe ich bei meinem Ansatz falsch gemacht?


DateTime aktuell = DateTime.Now;
string LogFile = "logfile.txt";

public void AppendLogFile(string sFilename, string sLines)
{
     StreamWriter myFile = new StreamWriter(sFilename, true);
     myFile.Write(sLines);
     myFile.Close();
}

AppendLogFile(LogFile, aktuell.Date.Day + "." + aktuell.Date.Month + "." + aktuell.Date.Year + "-" + aktuell.TimeOfDay.Hours + ":" + aktuell.TimeOfDay.Minutes + ":" + aktuell.TimeOfDay.Seconds + "TEST" + "\r\n");

12.12.2010 - 15:15 Uhr

Hi zero_x.

Vielen Dank für deine Antwort.

12.12.2010 - 13:31 Uhr

Hi an alle.

Mir war es zu lästig beim meinem Programm, welches Standardmäßig mit Framework 4 erstellt wird, jedesmal wenn ich es auf einem anderen Rechner testen wollte, zuerst das Framework 4.0 installieren musste.

Deswegen habe ich im Projekt nun 3.5 eingestellt, da das eh schon fast Standard ist.
Wenn ich das gemacht habe und Visual Studio die Einstellungen übernimmt, kommt folgende Fehlermeldung:

Warnung 1 Der Primärverweis "Microsoft.CSharp", bei dem es sich um eine Frameworkassembly handelt, konnte im derzeit als Ziel verwendeten Framework nicht aufgelöst werden. ".NETFramework,Version=v3.5". Zur Beseitigung des Problems muss entweder der Verweis "Microsoft.CSharp" entfernt oder die Anwendung erneut als Ziel für eine Frameworkversion verwendet werden, die ".NETFramework,Version=v3.5" enthält. ACU

Kann ich die nun einfach löschen?

Oder gibt es einen anderen Weg, dass Z.b.: das Framework 4 beim compelieren des Projekts irgendwie in die exe eingebettet wird, dass ich nicht immer auf einem Rechner ohne Framework 4 dieses zuerst installieren muss?

Vielen Dank.

12.12.2010 - 13:21 Uhr

Habe den Fehler nun gefunden. Zum einen lag es an einem nicht korrekt eingebundenen ErrorProvider. Zum anderen habe ich in der Access Spalte als Namen User und Password verwendet was dort anscheinend schon systemseitig belegt ist. Problem gelöst.

07.12.2010 - 18:23 Uhr

Ähm, meines Wissens überschreibe ich diese nicht. Meinst du in dem Quelltext den ich gepostet habe oder anderswo?

Mit deiner Aussage hast du natürlich recht, das Provisorium ist meist recht langlebig.

06.12.2010 - 22:01 Uhr

Ich weiss, dass das nicht ein sehr sauberer Weg ist, aber dennoch müsste er doch eigentlich funktionieren, oder?

Würd erst gern den Fehler in meinem Programm finden und verstehen und mich dann anschließend daran machen um es dann vernünftig zu verbessern, wie es gehört.

Kann jemand erkennen warum meine Variante nicht funktioniert, oder sagen wie sie funktioniert?

Vielen Dank.

29.11.2010 - 01:05 Uhr

Hi.

Vielen Dank für das Nachschlagewerk.

Leider konnte ich mit den Links mein Vorhaben nicht so recht umsetzen.
Habe es nun auf meine Weise gelöst. Habe die Datenpfade von einer anderen Form nach deren Eingabe in eine Klasse gespeichert(Options). Diese speichert mir wiederum die Daten in eine xml Datei. Das String Array füttere ich mit diesen Werten und lasse sie innerhalb der for schleife beim kopiervorgang "wechseln".

Ist zwar sicher nicht die einfachste Lösung, aber ich denke doch noch halbwegs elegant.


for (int i = 0; i < 3; i++)
{
string[] arr_source = { Options.sourcefolder1_path, Options.sourcefolder2_path, Options.sourcefolder3_path};
string[] arr_target = { Options.targetfolder1, Options.targetfolder2, Options.targetfolder3};

MyClient.UploadFile(arr_target[i] + "\\" + oFile.Name, arr_source[i] + "\\" + oFile.Name);
}

28.11.2010 - 20:26 Uhr

Hi an alle.

Ich habe folgendes Problem und weiss nicht recht wie ich es lösen soll.

Ich habe eine Formular mit welchem ich Ordner von A nach B kopieren will.

Auf der linken Seite habe ich 3 Textboxen welche die Quellordner darstellen.
Auf der rechten Seite sind die Zieleordner.

Die Daten welche kopiert werden werden woanders abgebildet. Hierfür nicht relevant.

Nun möchte ich mit einer simplen for Schleife sozusagen zeilenweise das abarbeiten.

  1. Durchlauf copy textboxquelle1 nach textboxziel1
  2. Durchlauf copy textboxquelle2 nach textboxziel2
  3. Durchlauf copy textboxquelle3 nach textboxziel3

Es mag etwas seltsam gelöst sein, aber im Hintergrund wäre es zu aufwendig alles umzubauen.

28.11.2010 - 20:16 Uhr

verwendetes Datenbanksystem: <MS Access 2003>

Hi an alle.

Ich schreibe an einem Tool in welchem ich über einen "bindingNavigatorDatabase" und ein paar Textboxen Einträge aus meiner Datenbank ansehen, aber auch verändern möchte.

Das ansehen klappt wunderbar und ich kann auch durch die Einträge in meiner Datenbank blättern. Leider kann ich nichts verändern. Ich komme einfach nicht drauf wo der Fehler liegen könnte. Es schlägt auch keine Exception an.

Vielleicht kann mir jemand von euch weiterhelfen.

Anbei der Code und ein Screenshot.

25.11.2010 - 17:34 Uhr

Wenn ich in den Eigenschaften der ListView die Eigenschaft View=Details setze, dann bleibt die ListView Box weiss. Ich sehe dann keinen Eintrag.

24.11.2010 - 23:22 Uhr

Hi Darth Maim.

Vielen Dank für den Hinweis. Habe nun ein Property gefunden, dass die Ansicht korrigiert. Wenn ich die View Property auf "SmallIcon" setze, dann ist es schön untereinander und nicht eingerückt.

Jetzt ist der farbige Hintergrund natürlich nur so lange wie der String der drin steht. Kann ich das über die Farbe über die ganze Breite der ListView gehen lassen, so dass z.B.: das rot bis rechts ans Ende der ListView reicht?

24.11.2010 - 22:43 Uhr

Hi herbivore.

Anbei nun der Screenshot von meiner ListView. Sieht einfach echt komisch aus mit den Zeilenumbrüchen und etwas eingerückt.

Im Netz gefunden habe ich noch ein Bild gefunden, wie ich mir das Aussehen in etwa vorstelle. http://www.codeproject.com/KB/webforms/ColorListBox/ColorListBox.gif

24.11.2010 - 01:42 Uhr

Vielen Dank für den Link. Ich komm immer einen Schritt weiter, aber ganz bis ans Ziel schaffe ich es nicht. 😃

Bei dem 1 zeiler scheitere ich bei der Syntax des letzten Arguments Font. Da weiss ich nicht was eintragen.


ListViewItem lvi = new ListViewItem("Text", 0, Color.Black,Color.White,??);

Deswegen habe ich es mal so probiert:


ListViewItem lvItem = new ListViewItem(item.ToString());
lvItem.ForeColor = Color.Green;
lvItem.BackColor = Color.Red;
this.lvLog.Items.Add(lvItem);

Leider rückt der neue Eintrag in der Box etwas ein und macht zwischen jeden Eintrag einen großen Zeilenumbruch.(Sieht aus wie 2 mal Enter gedrückt. 😃

Das Ziel ist nah, aber ich komm nicht drauf.

Vielen Dank für die Hilfe.

23.11.2010 - 19:32 Uhr

Hmm, habe mich nun auf diversen Seiten umgesehen, aber auch mit dem ListView Element kam nicht recht vorran.

Könntest du mir ein Beispiel nennen?

23.11.2010 - 12:24 Uhr

Hi gfoidl.
Vielen Dank für deine Anregungen und Tipps.

Ich konnte nun eine Klasse finden, welche einen Portscan als Validierung durchführt. Damit kann ich den Fehler von Beginn an abfangen.

Nun möchte ich die funktionerenden und nicht funktionierenden Server in einer ListBox ausgeben.

An sich funktioniert das auch recht hübsch, aber ich hätte gern, dass die nicht funktionierenden in roter farbe geschrieben werden und die funktionierenden in grüner Farbe. Leider habe ich keinen Schimmer wie ich das machen kann. Finde da nichts ähnliches wie .fontcolor=red oder so. 😃

Hier mein aktueller Codeabschnitt:
(Den restlichen meiner Meinung nach unbeteiligten Code habe ich mal weggelassen.


foreach (var item in clbCustomer.CheckedItems)
{
.
.
    this.lbLog.Items.Add(item.ToString());
.
.
}


21.11.2010 - 23:40 Uhr

@ gfoidl: Vielen Dank für deinen Tipp. Ich konnte nun mit dem webclient meinen ftp transfer umbauen. Leider klappt das mit dem try/catch nicht so wie ich das gerne hätte.

Es könnte ja theoretisch sein, dass ein User eine falsche IP Adresse eingibt, oder ein FTP Server down ist. Diese Eventualität würde ich gerne abfangen und beim Transfer überspringen.

Da ich für jedes markierte Element in meiner Listbox jede Datei eines ausgewählten Ordner uploaden möchte, kommt bei jeder Datei die versucht wird auf den ftp zu laden die exception meldung. Soweit so gut. Ich dachte mir wenn ich die MessageBox mit der Exception auskommentiere, dann bleibt die Meldung aus und der Fehler wird rasch übersprungen.
Leider bleibt nur die Meldung der Exception aus und das Programm freiert ein. Wahrschienlich so lange bis es bei allen Dateien gescheitert ist. Da es hier 10-30 Dateien sind, dauert das schon etwas. Ich breche dann meist über den Taskmanager das Prog ab.

Wie kann mein Tool so adaptieren, dass es mir bei nicht erreichbaren FTP Servern nicht einfriert? Es soll die nicht erreichbaren FTP Server einfach auslassen. Oder schnell überspringen.

Anbei ein Auszug meines aktuellen Codes (Inhalt eines Buttons):


foreach (var item in clbCustomer.CheckedItems)
{
	DataTable dt = new DataTable();
	da.SelectCommand = new OleDbCommand("SELECT * FROM CustomerDB WHERE Name = '" + item.ToString() + "'", con);
	da.Fill(dt);

	//MessageBox.Show(item.ToString());

	string sPath = Options.sourcefolder1_path;

	System.IO.DirectoryInfo oDir = new System.IO.DirectoryInfo(sPath); // Directory-Object erstellen
	System.IO.FileInfo[] oFiles = oDir.GetFiles(); // alle Dateien des Ordners

	foreach (System.IO.FileInfo oFile in oFiles)
	{

		BasicFTPClient MyClient = new BasicFTPClient();

		MyClient.Host = "" + dt.Rows[0]["Address"];
		MyClient.Username = "" + dt.Rows[0]["User"];
		MyClient.Password = "" + dt.Rows[0]["Password"];

		try
		{
			MyClient.UploadFile(Options.targetfolder1 + "\\" + oFile.Name, sPath + "\\" + oFile.Name);
		}

		catch (WebException ex)
		{
			//MessageBox.Show(ex.Message);
		}

	}
	progressBar1.Value++;
}

20.11.2010 - 12:10 Uhr

Hi.

Habe den Fehler nun gefunden. Der Fehler trat immer dann auf, wenn der ausgewählte ftp server nicht erreichbar war. Wie kann ich bei dieser Variante des FTP Transfers einen nicht erreichbaren FTP Server überspringen?


DataTable dt = new DataTable();
da.SelectCommand = new OleDbCommand("SELECT * FROM CustomerDB WHERE Name = '" + item.ToString() + "'", con);
da.Fill(dt);
string sPath = sourcepath + "\\cmd";

System.IO.DirectoryInfo oDir = new System.IO.DirectoryInfo(sPath); // Directory-Object erstellen
System.IO.FileInfo[] oFiles = oDir.GetFiles(); // alle Dateien des Ordners
    
foreach (System.IO.FileInfo oFile in oFiles)
{
(new Microsoft.VisualBasic.Devices.Computer()).Network.UploadFile(sPath + "\\" + oFile.Name, "ftp://" + dt.Rows[0]["Address"] + "/cmd/" + oFile.Name, "" + dt.Rows[0]["User"], "" + dt.Rows[0]["Password"], true, 500, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
}

Vielen Dank.

19.11.2010 - 11:47 Uhr

Hi an alle.

Ich möchte den Inhalt eines Ordners auf einen FTP uploaden.
In diesem Ordner befinden sich weitere 3 Ordner mit Dateien.

Wie kann ich das realisieren?

Ich hatte das schon so ähnlich in VB.NET gelöst und nun versucht das in C# zu transportieren. Leider funktioniert das nicht.

Vielleicht hat jemand eine Idee woran das liegen könnte.

Zeile mit dem Fehler:


(new Microsoft.VisualBasic.Devices.Computer()).Network.UploadFile(sPath + "\\" + oFile.Name, (string)("ftp://" + dt.Rows[0]["Address"] + "/cmd/" + oFile.Name), dt.Rows[0]["User"], dt.Rows[0]["Password"], true, 500, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);

Fehler:

Fehler 1 Die beste Übereinstimmung für die überladene Microsoft.VisualBasic.Devices.Network.UploadFile(string, string, string, string, bool, int, Microsoft.VisualBasic.FileIO.UICancelOption)-Methode hat einige ungültige Argumente. E:\FH\Sem3\OOA\MyProjects\ACU\ACU\OverviewForm.cs 94 21 ACU

Der nachstehende Code zeigt einen der 3 Unterordner welche ich übertrage und zeigt den Inhalt eines Button Click.

foreach (var item in clbCustomer.CheckedItems)
            {
                DataTable dt = new DataTable();
                da.SelectCommand = new OleDbCommand("SELECT * FROM CustomerDB WHERE Name = '" + item.ToString() + "'", con);
                da.Fill(dt);

                //MessageBox.Show("Ausgabe: Name:" + dt.Rows[0]["Name"] + " Address:" + dt.Rows[0]["Address"] + " User:" + dt.Rows[0]["User"] + " Password:" + dt.Rows[0]["Password"]);

                string sPath = sourcepath + "\\cmd";

                System.IO.DirectoryInfo oDir = new System.IO.DirectoryInfo(sPath); // Directory-Object erstellen
                System.IO.FileInfo[] oFiles = oDir.GetFiles(); // alle Dateien des Ordners
    
                foreach (System.IO.FileInfo oFile in oFiles)
                {
                    (new Microsoft.VisualBasic.Devices.Computer()).Network.UploadFile(sPath + "\\" + oFile.Name, (string)("ftp://" + dt.Rows[0]["Address"] + "/cmd/" + oFile.Name), dt.Rows[0]["User"], dt.Rows[0]["Password"], true, 500, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
                }
                
            }