Laden...

Forenbeiträge von wds Ingesamt 61 Beiträge

18.11.2006 - 11:53 Uhr

Das ist mein Schema:

<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	
	<xsd:complexType name="product">
		<xsd:sequence>
			<xsd:element name="category" type="xsd:string" />
			<xsd:element name="label" type="xsd:string" />
			<xsd:element name="document" type="xsd:string" />
		</xsd:sequence>
		<xsd:attribute name="code" type="xsd:string" />
	</xsd:complexType>	
	
	<xsd:element name="products">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="product" type="product" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="cd" type="xsd:string" />
		</xsd:complexType>
	</xsd:element>

</xsd:schema>

Es werden zwei XML-Dateien erstellt (Dokument-Sprache deutsch / englisch).
Falls kein Dokument auf Englisch existiert, so muss die Grundstruktur (products) angelegt werden.

18.11.2006 - 09:47 Uhr

nicht valide:

<products cd="abcd" />

valide:

<products cd="abcd" />
...
</products>

18.11.2006 - 08:50 Uhr

Nun, ich erhalte keine Fehlermeldung. Mein Validator liefert mir halt "false" für einen solchen Knoten.

17.11.2006 - 07:21 Uhr

8o upps, das stimmt. So wird das Tag wohl nicht geschlossen...
Wie lautet denn das Schema, damit die Kurzform akzeptiert wird?
Anbei der Teil meines Schemas, der die Form des äußeren Knotens vorgibt.


...
<xsd:element name="products">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="product" type="product" maxOccurs="unbounded" />
			</xsd:sequence>
			<xsd:attribute name="cd" type="xsd:string" />
		</xsd:complexType>
</xsd:element>
...

16.11.2006 - 20:07 Uhr

stimmt du hast Recht.

Ich erhalte
<products cd="abcd"/>

Ich brauche aber unbedingt

<products cd="abcd">
<products/>

da die Datei sonst nicht schemenkonform wäre.

16.11.2006 - 13:59 Uhr

Hallo zusammen,

ich habe das Problem, dass mir mein Endtag fehlt, falls ich keine Kindknoten einfüge.
Wie kann ich diesen erzeugen. CreateElement liefert mir ja laut Doku nur einen Prefix

// Neues Element erstellen und einfügen
XmlNode productsNode = doc.CreateElement("products");			
XmlAttribute productsAttribute = doc.CreateAttribute("cd");
productsAttribute.Value = dudConf.SelectedItem.ToString();
productsNode.Attributes.Append(productsAttribute);			
doc.AppendChild(productsNode);	

Ich erhalte <products cd="abcd"> ohne schließendes Tag

14.11.2006 - 18:10 Uhr

super vielen Dank!

(Nix)Intellisense hat's mal wieder verrafft 🙁

Btw (offtopic hier):

Wo bekomme ich gute Guidelines für Code-Kommentare her?
Vielleicht gibts Tools, die die XML-Struktur schon vorgeben?

14.11.2006 - 16:50 Uhr

Hallo zusammen,

kurze Frage:

Wie kann ich bei unwichtigen Controls die Tabstops deaktivieren.
Wenn ich in meinem Workflow durch bin, müssen jedesmal alle andern Controls mit der TabTaste angesprochen werden, bevor der nächste Durchlauf dran ist. Darunter sind natürlich auch Labels für überschriften etc. Das beeinflusst die Benutzbarkeit...

07.11.2006 - 08:56 Uhr

Achso.

[X] Unterstrichene Buchstaben für Tastaturnavigation ausblenden (mit Alt-Taste einblenden)

In Top-Level-Menüpunkten klappt das soweit. Die werden ja auch nicht benutzerdefiniert gezeichnet. In Unterpunkten mit vorangestelltem Icon halt nicht.

Da sieht der Benutzer dann z.B.:

Unter&menue

wobei das "&" ja eigentlich ersetzt werden sollte.

Ich habe mich nicht weiter darum gekümmert, da es erst einmal wichtiger Sachen gab. Zwar leidet die Usability etwas darunter, die Navigation über die Tastatur ist aber dennoch möglich...

Falls Du eine Lösung haben solltest, wäre ich höchstinteressiert!

06.11.2006 - 23:07 Uhr

Bist Du sicher dass Du "Unterstrichene Buchstaben für Tastaturnavigation ausblenden (mit Alt-Taste einblenden)" ausgeschaltet hast ?

kannst du das auch etwas anders formulieren? 😉 Habe gerade leichte Kopfschmerzen und Probleme die Frage zu verstehen....

09.10.2006 - 17:46 Uhr

hmmm, wegen der Eichhörnchen mach ich mir keine Sorgen. Ich weiss, ich sollte das beachten, aber für das Projekt gilt "nach mir die Sinnflut" 🙂
Ich habe eine eigene, windowsunabhängige Benutzerverwaltung geschrieben. Deswegen stellt SSPI für mich keine Lösung dar.

Ich habe mir das ungefähr so vorgestellt:

Wenn ich die entsprechende Rolle (meine Benutzerverwaltung) habe, darf ich Dateien aus der Netzwerkfreigabe auf meinen Rechner kopieren.

Ich hab im Netz was gefunden

Bei RBAC wird das Rollenkonzept verwendet. Gewöhnlich handelt es sich bei einer Rolle um den Titel einer Stelle wie „Manager“, „Kassierer“ oder „Verkaufsleiter“. Bei RBAC werden diesen Rollen Anwendungsberechtigungen zugeordnet, damit die Verwaltung der Zugriffssteuerung nach der Rolle des Benutzers erfolgen kann.

09.10.2006 - 07:55 Uhr

sorry,hätte vielleicht erwähnen sollen, dass es sich um ein Windows-Forms-Projekt handelt. Ich möchte einfach verhindern, dass jeder über den unc-Pfad (zum Beispiel mit dem Windows-Explorer) Zugriff auf das Verzeichnis hat...

08.10.2006 - 14:26 Uhr

ist es möglich, sich per c# für eine geschützte Netzwerkfreigabe zu authentifizieren? Ich möchte das Passwort in die Anwendung einbauen und nicht für jeden potentiellen Benutzer einen Account anlegen müssen.

-->

Zugriff auf die Netzwerkfreigabe soll nur über meine Anwendung möglich sein

06.10.2006 - 11:31 Uhr

Hallo zusammen,

ich lade über Win32 Icons zu angegebenen Extensions in eine Listview. Dabei erhalte ich ständig einen hässlichen schwarzen Rand um die Icons. Ich habe ein wenig mit der Farbtiefe und der Icongröße der dazu benutzten Imagelist gespielt, aber hat nichts geholfen.

Ich habe zunächst Icons eingebunden und es dann mit Images (da konnte ich dann die transparente Farbe in der ImageList angeben) versucht.

Einen Screenshot habe ich angehängt.

18.09.2006 - 07:55 Uhr

Jeder Windows-Prozeß, der in der Lage ist die CLR zu laden, kann als Host verwendet werden.

Wie kann ich denn serverseitig beispielsweise eine Referenz auf eine Textbox in der Serverform erhalten?

Wenn ich in meinem RemoteObject Console.Writeln(..) aufrufe, ist das ja ein System-Aufruf. Aber für textBox.Text müsste mein RemoteObject doch die ServerForm kennen?

17.09.2006 - 12:56 Uhr

Danke für den Hinweis!

Ich hatte dazu auch noch diesen Link gefunden:

Gewusst wie: Asynchrones Aufrufen von Methoden für ein Remoteobjekt

Der weisst auch auf das von Dir erwähnte Beispiel (deutsch) hin.

Jetzt klappt es wunderbar.

Weisst Du vielleicht noch, ob man den Server auch als Windows-Form realisieren kann? Ich fände es besser das Logging nicht im MS-Dos-Fenster sondern zum Beispiel in einer Textbox auszugeben.

Alternativ könnte ich mir auch vorstellen, das als Windows-Dienst laufen zu lassen.

Gruss

15.09.2006 - 18:44 Uhr

hallo zusammen,

ich möchte, dass Clients über ein lokales Netzwerk eine langlaufende Methode auf dem Server aufrufen können. Der Code auf dem Client wird dabei geblockt und die Anwendung reagiert für diese Zeit nicht mehr.

Um das zu lösen müsste ich asynchrones Remoting einsetzten, oder?
Und wenn ja, wie kann ich dem Client dann mitteilen, dass die Methode auf dem Server beendet wurde.

Ich habe ein Beispiel für Remoting mit Exents gefunden. Hier musste aber leider die IP des Clients in der App.conf angegeben werden.

Was ist denn der übliche Lösungsweg für diese Problemstellung?

09.09.2006 - 23:13 Uhr

ich habe hier mal ein eigenes WaitForExit gebastelt.
Schlagt mich bitte, wenn es grausam programmiert ist. Mir fällt nichts anderes mehr ein.


...
myPro.Start();
myPro.WaitForExit();    

bool run;
 
do
{	
	Process[] processes = Process.GetProcessesByName("FlashPrinter");						
	for(int i = 0; i<processes.Length; i++)
	{
	      Console.WriteLine(processes[i].ProcessName);
	}
	Console.WriteLine("Druck läuft noch");
        Thread.Sleep(1000);
	run = processes.Length > 0;
}while(run);
Console.WriteLine("Druck beendet");

So wird zumindest kein neuer Druck gestartet bevor der alte beendet wurde.
Gibt es nicht einen schöneren/effizienteren Weg das umszusetzen?

09.09.2006 - 21:55 Uhr

Ok, danke Dir schon einmal für Deine Unterstützung

09.09.2006 - 21:39 Uhr

Bei mir wirft das keine Exception. Auf die Zeile

myPro.StartInfo.RedirectStandardOutput = true;

kann man auch verzichten. Ich weiss da mittlerweile auch nicht mehr weiter. Meine letzte Überlegung, da sich sowieso mehrere Flashpaper fenster öffnen:

Ist es möglich die Fenster über ihren Titel anzusprechen, dann das Drücken von Strg+S und Enter programmiertechnisch weiterzugeben?

09.09.2006 - 21:10 Uhr

Ja mit Notepad klappt das auch bei mir. Genauso stelle ich mir das auch vor. Da das Drucken serverseitig und im Hintergrund ablaufen soll habe ich das wie folgt angestossen.


System.Diagnostics.Process myPro = new System.Diagnostics.Process();
myPro.StartInfo.CreateNoWindow = false;
myPro.StartInfo.UseShellExecute = true;
myPro.StartInfo.RedirectStandardOutput = true;
myPro.StartInfo.FileName = @"C:\Programme\Macromedia\FlashPaper 2\FlashPrinter.exe ";	
myPro.StartInfo.Arguments = @"C:\1\test.pdf -o C:\1\test.swf";
myPro.Start();
myPro.WaitForExit();					

// Aussenrum ist ne Schleife, die mehrere Dokumente drucken soll. 

Flashprinter.exe ist der Drucker von Macromedia FlashPaper 2. Die Trial kann man bei denen laden.

09.09.2006 - 20:49 Uhr

[EDIT]Abgetrennt von Process[/EDIT]

sorry, dass ich michin den Thread einklinke. Ich muss PDFs drucken und rufe dazu einen drucker über die Console auf:

Flashprinter.exe source.pdf  -o dest.swf

Die WaitforExit-Methode wird komplett übergangen und der Code sofort weiter abgearbeitet. Das führt bei mir zum Programmabsturz. Ich habe mir die Prozesse mal direkt nach Aufruf ausgeben lassen und den FlashPrinter-prozess in der Liste der aktuellen Prozesse gefunden.

Kennt jemand eine Möglichkeit das abzufangen?

07.09.2006 - 22:29 Uhr

habs raus,

Richtig:

sql = "DELETE FROM [CDLIST] WHERE [CDID] = @v1 AND @v2 LIKE [FILENAME]";

Falsch:

sql = "DELETE FROM [CDLIST] WHERE [CDID] = @v1 AND [FILENAME] LIKE @v2";

mit

SqlCommand dCmd =  new SqlCommand(sql, conSqlEx);			
dCmd.Parameters.Add("@v1", SqlDbType.Int);			
dCmd.Parameters.Add("@v2", SqlDbType.VarChar);
dCmd.Parameters["@v1"].SourceColumn = "CDID";							
dCmd.Parameters["@v2"].SourceColumn = "FILENAME";
07.09.2006 - 21:47 Uhr

hmmm, auf deleted setzten geht nicht. ist schreibgeschützt.
8o aber row.Delete() scheint weiterzuhelfen. Habe ich eben nicht gesehen. Worin besteht denn der Unterschied zwischen remove und delete?

Nachtrag:

Jetzt bekomme ich dafür folgende Meldung:

System.Data.DBConcurrencyException: Parallelitätsverletzung : Der DeleteCommand hat sich auf 0 Datensätze ausgewirkt.
at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
at System.Data.Common.DbDataAdapter.Update(DataSet dataSet, String srcTable)

07.09.2006 - 21:45 Uhr

Ich suche die Reihe über einen zusammengesetzten Primärschlüssel. Dann rufe ich myDataTable.Remove(gefundeneReihe) auf.

Bin gerade mal die Reihen in der Tabelle durchlaufen und wollte mir den rowstate ausgeben lassen. Wenn ich zuvor nur eine Zeile drin habe und die dann wieder lösche, existiert ja gar keine Reihe mehr in der Tabelle des Datasets bevor ich das Update ausführe. Muss ich de rowstate der zu löschenden Reihe auf deleted setzten um eine Reihe zu löschen?

07.09.2006 - 21:11 Uhr

Woran kann es liegen, dass beim Löschen einer Zeile im Dataset die Datenbank (sqlex) nicht aktualisiert wird? Ich habe es sowohl mittels Commandbuilder als auch über selbst geschriebene Commands versucht. Datensätze eintragen funktioniert.

16.08.2006 - 16:39 Uhr

funktioniert das mit allen Anwendungen? Bei mir scheint das nicht zu klappen. Ich starte die Flashprinter.exe (MM Flashpaper) um PDFs automatisch nach SWF zu konvertieren. Beim Debuggen ist mir aufgefallen, dass der Code weiter abgearbeitet wird, obwohl das Dokument noch nicht konvertiert wurde.

15.08.2006 - 17:23 Uhr

so, bin etwas weitergekommen und kann jetzt schon Dokumente konvertieren.

Dazu mal etwas Code:


private static void watch_Created(object sender, FileSystemEventArgs e)
{
	// Benachrichtigungsinformationen anzeigen
	Console.WriteLine("\tBENACHRICHTIGUNG: " + e.FullPath + "' wurde " + e.ChangeType.ToString());
	Console.WriteLine();
	// Dokument drucken -> Flashpaper
	ProcessStartInfo test = new ProcessStartInfo(@"C:\Programme\Macromedia\FlashPaper 2\FlashPrinter.exe", e.FullPath + " -o " 
        + Path.ChangeExtension(e.FullPath, ".swf"));
	test.CreateNoWindow = false;
	Process myProcess = Process.Start(test);
	myProcess.WaitForExit();			
}

Ich kann jetzt ein PDF-Dokument in den Watch-Ordner meines FileSystemWatcher kopieren. Das Dokument wird automatisch konvertiert. Allerdings wird es dazu zunächst geöffnet. Wie kann ich bei mehreren Dateien zunächst warten, bis die erste gedruckt wurde, dann Acrobat schliessen und jetzt erst die nächste drucken?

15.08.2006 - 16:31 Uhr

Hallo,

wie kann ich PDF- und PNG-Dokumente automatisch in SWFs konvertieren. Ich habe Flashpaper installiert. Jetzt kann ich die Dokumente auch per Rechtsklick "in swf konvertieren" drucken. Allerdings öffnet sich dazu ein Printdialog in dem der Dateiname der swf-Datei angegeben werden soll.

Kann ich das irgendwie umgehen?

14.08.2006 - 16:00 Uhr

Hallo zusammen,

ich lade momentan PDF-Dokumente aus meiner Anwendung auf einen FTP-"Dokumenten"Server, der im normalen Windows-Netzwerk läuft. Später möchte ich diese Dokumente dann im Web veröffentlichen können. Dazu müssen sie vom lokalen FTP-Sever auf den Ftp-Server im Web geladen werden. Ich muss sicherstellen, dass die Dokumente übertagen werden, bevor ich sie auf der Internetseite zum Download anbiete. Es kann durchaus vorkommen, dass 30 Dokumente a 0,5MB auf einmal übertagen werden. Falls bei einer Datei ein Fehler auftritt, so soll diese übersprungen werden.

Momentan sind mir dazu vier Lösungen eingefallen:

A: Externes Tool zum FTP Sync (z.B. FTP-Watchdog)
B: Remote Objects / Client-/Server (Remote-Object erhält Uploadliste)
C: vorheriger Transfer der Daten zum Rechner auf dem die Anwendunge läuft und dann Upload ins WWW
D: direkter FTP-Upload durch Angabe eines UNC-Pfades in der Anwendung

Für welche Lösung würdet Ihr euch entscheiden?
Gibt es Vor- / Nachteile bzw. bessere Alternativen?

10.08.2006 - 13:38 Uhr

ok, mittlerweile habe ich herausgefunden, dass mehere Tabellen nicht über einen Commandbuilder mit der DB abgeglichen werden können.
Ich versuche also, die Befehle selbst zu definieren. Dabei muss ich doch nur UPDATE, INSERT und DELETE angeben, oder?

by the way:

Wie kann ich mehrere Tabellen dann mit einem Transaktionsobjekt mit der DB abgleichen?

09.08.2006 - 19:58 Uhr

Hallo zusammen,

das Update meiner Tabellen über einen SqlDataAdapter schlägt fehl und eine Primary-Key-Verletzung wird angezeigt.

Ich habe zwei Tabellen erstellt. In beiden gibt es einen Primary-Key "CODE" (string) und jeweils weitere voneinander unabhängige Daten. Wenn in Tabelle A etwas gelöscht wird, so wird das an Tabelle B weitergegeben.

Beide Tabellen werden in einem DataSet lokal gespeichert.
Ich möchte nun in beiden Tabellen etwas eintragen und sie updaten.

myAdapter.Update(myDataSet, "TabelleA");
myDataAdapter.Update(myDataSet, "TabelleB");

schlägt fehl mit der Meldung

Verletzung der PRIMARY KEY-Einschränkung 'PK_TabelleA'. Ein doppelter Schlüssel kann in das 'dbo.TabelleA'-Objekt nicht eingefügt werden.

Beim Debuggen ist mir aufgefallen, dass der Fehler erst beim Aufruf des zweiten Updates auftritt. Das kann aber doch eigentlich nicht sein, da ja hier eine völlig andere Tabelle aktualisiert werden soll???

Nachtrag:

Ich habe gerade mal zwei Tabellen angelegt:
TabA
name (pk)
test1

TabB
name(pk)
test2

So fülle ich zwei DataGrids

conSqlEx.Open();
userSqlExDA = new SqlDataAdapter();
userDS = new DataSet();
userSqlExDA.SelectCommand = new SqlCommand("SELECT * FROM TABB ; SELECT * FROM TABA");
userSqlExDA.SelectCommand.Connection = conSqlEx;
userSqlExDA.Fill(userDS);
					
userDS.Tables[0].TableName = "TABB";
userDS.Tables[1].TableName = "TABA";
userSqlExCB = new SqlCommandBuilder(userSqlExDA);				

dataGrid1.DataSource = userDS.Tables["TABB"];
dataGrid2.DataSource = userDS.Tables["TABA"];

Und hier das Update:

userSqlExDA.Update(userDS, "TABA");
userSqlExDA.Update(userDS, "TABB");

Warum wird mir denn vom CommandBuilder nur ein UpdateCommand für eine Tab erstellt?

UPDATE TABB SET name = @p1 , test2 = @p2 WHERE ( (name = @p3) AND ((@p4 = 1 AND test2 IS NULL) OR (test2 = @p5)) )
02.08.2006 - 13:23 Uhr

Top, genau das habe ich gesucht! 🙂
Danke für den Hinweis. Es hat mir einiges an Arbeit erspart.

02.08.2006 - 12:43 Uhr

Access bietet einen Export nach XML. Das wäre hier eine brauchbare Schnittstelle...

02.08.2006 - 11:12 Uhr

dann hätte ich die Daten aber immer noch in der Access-DB und würde nur über TSQL darauf zugreifen, oder? Ich würde lieber alles im SQLEx haben. Mir geht es darum eine bestimmte Tabelle aus Access (ca. 1000 Einträge) zu importieren.
Ich hatte an einen Access->XML-Export gedacht. Anschliessend XML->DataSet und Eintrag in SQLEx. Die Tabelle müsste ich vorher natürlich von Hand anlegen...

02.08.2006 - 10:34 Uhr

Hallo zusammen,

besteht eine Möglichkeit, eine Access DB bzw. einzelne Tabellen/Sichten in SqlExpress zu importieren. Die Suche im www verlief bisher dazu leider erfolglos.
Der Sql2000-Server hat ja die Möglichkeit, über Task>Import>...

31.07.2006 - 17:41 Uhr

anscheinend darf man bei SqlExpress bestimmte Tabellennamen nicht verwenden.
Der angezeigte Fehler lag an der Sql-Abfrage

SELECT * FROM user

31.07.2006 - 16:07 Uhr

Hallo zusammen,

ich möchte eine Verbindung zu einer SqlExpressDB aufbauen.
Diese habe ich mit den Management-Tool erzeugt und anschliessend einen Benutzer angelegt. Wenn ich in VS03 eine neue Verbindung zur Datenbank aufbaue, so funktioniert das einwandfrei. Ich möchte aber die Verbindung manuell aufbauen.
Dazu habe ich schon einige Connectionstrings (aus diesem Forum und von Connectionstrings.com) ausprobiert. Leide ohne Erfolg.

String DSN = @"Data Source=localhost\SQLExpress; Database=mydb; USER Id=myuser; PASSWORD=mypasswd; Trusted_Connection=True";

oder

String DSN = @"Data Source=MOBILE\SQLExpress;Initial Catalog=mydb;Persist Security Info=True;User Id=myuser;Password=mypasswd;";

Gibt es einen einfachen conString den ich zum Testen der DB-Funktionalität verwenden kann? Ich möchte anstelle der Intregated Security eine Anmeldung über Benutzername und Passwort aufbauen.

Mit den obigen Strings erhalte ich Fehlermeldungen wie falsche Syntax in der Nähe des user-Schlüsselwortes. (Selbst, wenn ich keine User angebe!?)

28.07.2006 - 13:13 Uhr

Bei der Suche im Internet bin ich auf diesen interessanten Link gestossen.
Darin wird die Threadsicherheit mit GUI-Zugriff behandelt.
Wenn ich es richtig verstehe, müsste ich die Methode CalcPi durch meine FtpUpload-Methode ersetzen, oder? Das ProgressBar-Steuerelement wird über BeginInvoke angesteuert...

28.07.2006 - 12:21 Uhr

Hmmm, jetzt bin ich etwas verzweifelt 🙁
War gerade froh, das Problem gelöst zu haben.
Hast Du vielleicht ein kleines Beispiel, wie man die BeginInvoke-Methode dazu nutzt?

Ein zusätzliches Problem besteht darin, dass ich neben der Aktualisierung von pbar.value auch Änderungen an meiner Uploadform zur Laufzeit durchführe.
Dazu mal ein Screenshot der Uploadform im Anhang:

27.07.2006 - 09:15 Uhr

habs nun geschafft.

  1. in UploadForm den ByteTransferred-Eventhandler einbauen
  2. in UploadForm eine Methode void Upload() schreiben, die alle Dateien per FTP überträgt. Sie nutzt die Membervariable ftpConnection der UploadForm.
  3. Asynchrones Ausführen über
Thread asyncUpload = new Thread(new ThreadStart(Upload));
asyncUpload.Start();
  1. im ByteTransferred-Eventhandler der Progressbar den Wert von e.byteCount/fileSize*100 zuweisen.
25.07.2006 - 16:50 Uhr

Hallo herbivore,

ich werde mich etwas mit den Eventhandlern beschäftigen und morgen meine Fortschritte posten.

Zunächst schon mal vielen Dank für Deine Hilfe

25.07.2006 - 16:33 Uhr

Hallo herbivore,

ich starte ja aus meiner Uploadform für jede Datei, die ich übertragen möchte einen MyftpUpload-thread, dem ich die Dateinamen und die ftpConnection übergebe. Dort wird dann der eigentliche Upload ausgeführt.

Nach vorheriger Aussage müsste ich somit also das Event in der MyFtpUpload-Klasse abfangen, oder?

Ich habe gerade versucht, in der UploadForm einen Eventhandler zu registrieren.
Nur wem soll ich diesen zuweisen. Das ganze geschieht ja onload.

UploadForm:

this += new EnterpriseDT.Net.Ftp.BytesTransferredHandler(this.ftp_BytesTransferred);

und

private void ftp_BytesTransferred(Object sender, FTPMessageEventArgs)
{
// Progressbar ändern
}

klappt leider nicht.

25.07.2006 - 16:12 Uhr

Hat denn jemand von euch schon einmal die edtFtpnet-Lib verwendet? Ich hoffe, dass ich über den ByteTransferred-Event überhaupt an Infos zur Übertragung der Bytes herankomme. Es gibt eine Pro-Version, die das alles schon mitbringt. Ich möchte aber lieber die kostenfreie (bzw. andere Alternativen) nutzen.

Reagiert der EventHandler in der UploadForm denn auch auf Events, die im Thread geworfen werden?

25.07.2006 - 15:49 Uhr

Hallo,

ich habe im Netz schon einige freie Ftp-Libraries gefunden. Momentan benutze ich die Library "edtFTPnet" um jeweils ca. 10 Dateien auf einen FTP-Server im lokalen Netz zu übertragen. Allerding soll der Benutzer dazu den Fortschritt angezeigt bekommen, da manche Dateien durchaus größer als 5MB sind.
Ich rufe aus meiner MainForm den FtpUpload per myNewUpload.showDialog() auf.
Hier wird dem Benutzer jetzt eine Listbox mit zwei Spalten (Dateiname und Fortschritt) angezeigt.
Wie kann ich jetzt die Progressbar anbinden? Meine bisherigen Versuche haben nicht zum Erfolg geführt.
Momentan läuft das noch wie folgt:

  1. Klick auf Speichern in MainForm
  2. showDialog --> UploadForm mit Progressbar anzeigen
  3. Aus UploadForm wird beim Laden ein Thread gestartet , der die Dateien überträgt (Übergebe dazu die srcList und destList als string-Array)

Wie kann ich jetzt die Progressbar in der UploadForm an die übertragenen Bytes im Thread anbinden? Die FtpLibrary hat einen ByteTransferred-Event.

20.07.2006 - 11:55 Uhr

Danke, der Code funktioniert so! Aber warum bietet VS03 das nicht über Intellisense an? Das hat mich etwas verwirrt.

20.07.2006 - 11:39 Uhr

Genau das will ich auch machen.
Bei mir komme ich aber nur bis

Environment.GetFolderPath(Environment.
SpecialFolder.Personal);

wird mir nicht angezeigt. Muss ich einen bestimmten Verweis einfügen?

16.07.2006 - 12:26 Uhr

Hallo,

ich habe ein Menü mit Icons erstellt, die aus einer imgList geladen werden. Gibt es Richtlinien, wie man Icons oder zum Beispiel Hintergrundbilder für PictureBoxen einbindet?

Ich habe mal etwas gelesen von "Vorhandenes Element hinzufügen" -> Grafik auswählen -> "Eigenschaften" -> "eingebettete Ressource.

Macht das Sinn bzw. ist das der normale Weg?

10.07.2006 - 22:35 Uhr

nachdem ich den Menüeintrag auf ownerdrawn gestellt habe, werden die Shortcuts über das "&"-Zeichen nicht mehr eingebunden. Ich werde das mit den Shortcuts mal testen. Da gibts ja im Designer einen Eintrag zu. Leider ist die Auswahl bei mir fest vorgegeben...

10.07.2006 - 21:47 Uhr

weiss jemand, wie man bei selbst gezeichneten Menüs die "Alt"-Eigenschaft weiterverwenden kann? Vorher konnte man mit einem "&" das Zeichen markieren, das über die entsprechende Tastenkombination angesprochen wird.