Wie wärs wenn du den WebClient verwendest? Da läst sich das sehr einfach lösen.
WebClient wc = new WebClient();
using (MemoryStream ms = new MemoryStream(wc.DownloadData("http://www.mycsharp.de/wbb2/images/header/header_logo_3.gif")))
{
pictureBox1.Image = Image.FromStream(ms);
}
also es gibt bereits das property listviewitem.checked. die checkbox kannst du im designer anzeigen lassen. somit hast du vor jedem item eine checkbox. falls dir das reicht.
Laut deinem ersten Post konntest du ja bereits eine Verbindung herstellen. Nur das Absetzen des Commands hat nicht funktioniert. Also stimmt jetzt vermutlich etwas am connection string nicht.
Aber zurück zu meiner Frage: Hast du auch sicher die Tabelle angelegt?
foreach (string dir in Directory.GetDirectories(@"c:\testdir", "*", SearchOption.AllDirectories))
Directory.CreateDirectory(@"c:\testdir2" + dir.Substring(4));
Weil es einfach auf Client-Seite so im Resolver im OS verankert ist. Also schickt mein DNS Resolver ein rekursives Query an den DNS Server von meinem Provider bzw an den den ich eingetragen habe. Wie dieser DNS Server weiter vorgeht hängt dann von der Konfiguration. Außerdem
Zitat
Thus, if a DNS server does not have the requested information when it receives a recursive query, it queries other servers until it gets the information, or until the name query fails.Quelle
Zeig mir bitte mal wie du ein iteratives Query absetzt bzw. deinen Resolver/Webbrowser dazu veranlasst?
Klar werden die meisten Anfragen mittels Cache beantwortet. Ich wollte auch nur die theretische Vorgehensweise demonstrieren.
Meiner Meinung ist das ein wenig verwirrend beschrieben auf Wikipedia. Hier unter Resolver sthet es besser(richtig) beschrieben.
Der Browser entscheidet nicht, aber er kann nur eine rekursive Anfrage starten und keine iterative(Genau genommen startet eben der Resolver die Anfrage und nicht der Webbrowser). Er wartet einfach auf eine Antwort. Sprich ich brauche die Ip für www.mycsharp.de
Also eine Anfrage läuft folgendermaßen ab:
Es gibt eine Rekursive Anfrage(diese macht zb dein Broswer): Also gib mir mal die Ip zu folgendem Namen oder umgekehrt.
Eine iterative Anfrage. Diese werden von anderen Servern gestartet. Dieser handelt sich soweit voran bis er die IP hat. Also er stellt immer wieder Anfragen an weitere DNS-Server.
Es gibt DNS-Server die für die jeweilige Zone autorativ sind. Sprich nur diese können dir Auskunft geben.
So und jetzt die Abfrage im Detail. Du tippst www.mycsharp.de in den Browser. Du bzw dein Browser stellt eine rekursive Anfrage an den DNS Server deines Providers. Falls die gesuchte Ip zufällig vom selben Provider ist, dann erhältst du direkt die IP vom DNS Server. Ansonsten fragt er bei einem der 13 Root server an. Der liefert dem DNS-Server deines Providers zurück: DIe IP für www.mycssharp.de kenne ich nicht aber wende dich an den DNS-Server von der TLD .de. So nun fragt er beim Server für .de nach der ip für www.mycsharp.de. Dieser antwortet wieder mit das kenne ich nicht aber frage mal beim zuständigen server für mycsharp.de. Dieser antwortet nun endlich mit der IP und sagt ja www.mycsharp.de kenne ich bin für diese zone autorativ und liefert die gewünschte ip.
Also in wirklichkeit gibt es viele DNS-Server. Weil nur mit den 13 wäre das nie und nimmer zu schaffen.
Wie wärs wenn du überprüfst ob der Klick in der "Button-Spalte" auftrat. Somit ignorierst du dann alle ContentClicks die nicht in der betreffenden Spalte auftreten.
Also uns wurde im Studium immer gesagt Datenbankzugriffe so kurz als möglich zu halten, um locks etc zu verhindern. Also lieber einmal öfter Verbindung aufbauen als die ganze Zeit offen zu halten.
Was für dich auch nützlich sein könnte: Threads mit mehreren Parametern
Somit musst du deine Paramter nicht in object-Array packen, sondern kannst gleich die Parameter übergeben und zudem auch noch typesafe.
Du musst den Typ von object auf int ändern bei der Add methode. Nur wird dir das leider auch nicht helfen, da:
Der geerbte Member "System.Collections.Generic.List<int>.Add(int)" kann nicht überschrieben werden, weil er nicht als "virtual", "abstract" oder "override" markiert ist.
Außerdem kann die Zuweisung int i = base.Add(value); auch nicht funktionieren, da Add void zurückliefert.
Möglichkeit 1:
public class StatementList : List<int>
{
public event EventHandler Changed;
protected virtual void OnChanged(EventArgs e)
{
if (Changed != null)
Changed(this, e);
}
public new void Add(int value)
{
base.Add(value);
OnChanged(EventArgs.Empty);
}
}
Möglichkeit 2:
public class StatementList : List<int>
{
public event EventHandler Changed;
protected virtual void OnChanged(EventArgs e)
{
if (Changed != null)
Changed(this, e);
}
public new int Add(int value)
{
base.Add(value);
OnChanged(EventArgs.Empty);
int i = 0;
return i;
}
}
So ich hab dir mal ein kleines Testprog angehängt.
Du rufst es so auf:
ParamTest.exe "c:/dokumente und einstellungen/all users/dokumente"
wenn du es so aufrufst
ParamTest.exe c:/dokumente und einstellungen/all users/dokumente
dann zeigt er die nur c:/dokumente an