Laden...
D
diver myCSharp.de - Member
Student Bayern Dabei seit 14.07.2006 44 Beiträge
Benutzerbeschreibung

Forenbeiträge von diver Ingesamt 44 Beiträge

17.02.2009 - 12:10 Uhr

Konnte das Problem mit Hilfe von "FormattedText" lösen.
Die FormattedText-Klasse beinhaltet ein Property "MaxTextWidth"
welches für die Beschränkung herangezogen werden kann.

Danach kann über "Height" ganz einfach die benötigte Höhe für den Text ausgelesen werden.

17.02.2009 - 10:54 Uhr

Danke für die Antworten.

Der Anwendungsfall wäre folgender:

Die Applikation bekommt Textblöcke mit gegebener FontSize und FontType (z. B. aus einer DB).

Diese Textblöcke sollen in eine Seite eingebunden werden, welche
eine feste Weite hat und die druckbar sein soll.
Diese Seite hat Textcontainer-Elemente (proprietär) welche über XML
spezifizert werden und erst von einer Consumer-Applikation gerendert wird.

Für einen Textcontainer ist hierbei immer eine Höhe und
Weite anzugeben. Da die Weite fest vorgegeben ist (vom Seitentyp her),
benötige ich für den Textcontainer nur noch die Höhenangabe.

Der TextContainer ist abgeleitet von einer WPF Usercontrol (TextBox).
Deshalb auch der Versuch den Platzbedarf mit dieser zu bestimmen.
Leider kann ich mit Textweite, die sich aus dem FontTyp und der FontSize ja bestimmen lässt nicht den exakten Zeilenbedarf (und deshalb auch nicht den exakten Höhenwert) bestimmen. Der Grund hierfür ist das Wrapping, welches Wörter am Zeilenende nicht trennt, sondern komplett in die nächste Zeile verschiebt.

15.02.2009 - 18:49 Uhr

Ist es möglich durch Initialisieren einer Textbox mit fester Weite im Codebehindfile
und setzen eines Textes daraus die benötigte Höhe für die Textbox zu ermitteln ?

Gedacht wäre etwa folgendes:


private double GetHeightForTextBox(string text, double textBoxWidth) {
TextBox t = new TextBox(); 
t.TextWrapping = TextWrapping.Wrap;  
t.VerticalAlignment = VerticalAlignment.Top; 
t.HorizontalAlignment = HorizontalAlignment.Left; 
t.FontFamily = new FontFamily(fontTypeFace);                
t.FontSize = Convert.ToDouble(fontSize);

t.Width = textBoxWidth;  // vorgegeben
t.Text = text;                 // vorgegeben

// layout initialisieren ? (Wie ?)

return t.Height
}

Folgender Code liefert bisher nur 0 für die Höhe.
Ist das versuchte überhaupt so realisierbar ?

05.08.2008 - 10:50 Uhr

Hallo,

  1. Ist es möglich in einem selbst erstellten deployment project (setup.exe, *.msi)
    command line parameter zu nutzen, welche beim aufruf der setup.exe übergeben
    werden ?
    Falls ja wo (in welcher Methode) müsste ich diese aufgreifen ?

  2. Falls in der setup.exe Methoden (z.B. benutzerdefinierte Aktionen im Installationsprozess) aufgerufen werden und diese eine Exception werfen,
    ist diese Exception dann gleich dem ExitCode des setup.exe - Prozesses ?

Gruß Diver

13.03.2008 - 18:19 Uhr

Ist es möglich "requested Privileges" (für den UAC) für dlls durch eine Manifestdatei ebenso zu spezifizieren wie dies bei Exe-dateien gemacht wird ?

Also ist im Sinne eines exe - manifests "Application.exe.manifest"
auch ein dll-manifest "SupportedFunctions.dll.manifest"
möglich oder gelten die Rechteeinstellungen für das UAC durch ein manifest nur für
exe - files ?

Und falls dies möglich ist, wie sehen die Namenskonventionen diesbzgl. aus ?

Gruß Diver

10.11.2007 - 15:46 Uhr

Du hast natürlich Recht, das kann ich mir vollständig sparen ! Das heißt, das
Problem hat sich damit erledigt.
Schätze das liegt an der alten Gewohnheit alles programmatisch lösen zu wollen.

Dennoch wüßte ich gerne wie ich eben programmatisch Verzeichnisse unter Vista
erstellen kann, so dass ich unter keinem Konto unter dem die Applikation läuft Schwierigkeiten bekomme. Gibt es hierzu vllt. Tutorials oder Artikel die ich verwenden könnte ?

Gruß und Danke für die Unterstützung. 👍

10.11.2007 - 12:11 Uhr

Ich habe mir eine Hilfsapplikation geschrieben,
welche mir sql s. e. edition für eine andere Applikation installieren soll.
Sie ist im Prinzip fertig, d.h. ich teste vorher auf bereits installierte Versionen, etc.
Es hapert jedoch an dem Anlegen der Verzeichnisse,
welche für die sql s. e. edition benötigt werden und deren Pfad der User
frei wählen können soll.

Momentan ist es also so, dass soweit alles ausprogrammiert ist,
die Hilfsapplikation jedoch insgesamt nicht lauffähig ist X( .

09.11.2007 - 19:05 Uhr

Danke herbivore,

dies bringt mich schon ein ganzes Stück voran.
Könntest Du mir vllt. ein simples Code-Beispiel dazu geben,
oder mich zumindest in die Richtung der benötigten Bibliotheken von
.net verweisen ?

Gruß Diver

09.11.2007 - 18:41 Uhr

Hallo,

ich kann unter Vista

Directory.Create("...")

und


DirectoryInfo dInfo = ... ;
dInfo.Create();

nicht verwenden, da jedes mal eine
UnauthorizedAccessException geworfen wird.
Die genaue Meldung ist hierbei: "Es wurde versucht, einen nicht autorisierten Vorgang auszuführen."

Ich habe es dann mit:


DirectoryInfo dInfo = new DirectoryInfo(@"Some\Path");
                DirectorySecurity dSecurity = dInfo.GetAccessControl();
                dSecurity.AddAccessRule(
                    new FileSystemAccessRule(Path.Combine(Environment.UserDomainName.ToString(),
                                             Environment.UserName).ToString(), 
                                             System.Security.AccessControl.FileSystemRights.CreateDirectories, 
                                             System.Security.AccessControl.AccessControlType.Allow));
                dInfo.SetAccessControl(dSecurity);
                dInfo.Create();

versucht. Allerdings mit dem gleichen Ergebnis. Es scheint als ob mir Rechte für die Applikation fehlen um dieses unter Vista auszuführen.
Ich arbeite im Admin Modus von Vista.

Ratschläge willkommen. Sowohl zu diesem Problem als auch zur Frage, wie ich unter Vista am besten Verzeichnisse anlegen kann.

28.07.2007 - 16:33 Uhr

Ich werde mich um sql server compact bemühen und versuchen die Applikation dann daran zu "binden". Scheint mir schlicht der bessere Weg zu sein.
Geht eine Distribution der benötigten dlls für sql server compact über meine Applikation und dessen Installer von Microsoft Seite her in Ordnung ?
(Müsste es natürlich, aber ich denke mir ich frage lieber vorher bevor ich dann
am Ende vllt. doch auf Schwierigkeiten stoße.)

Und danke für das auf den Weg bringen.

27.07.2007 - 17:38 Uhr

Danke. Der Tipp mit der Transaktion war hilfreich.

Bei Access 07 gibt es einen Wizard zum Einlesen verschiedener Dateitypen.
Ich habe diesen ausprobiert und die Performance war sehr gut, da hier ja die Schnittstelle über OleDb entfällt.

Gibt es vielleicht eine Möglichkeit diese Importfunktion über Interop oder COM anzusprechen ?

27.07.2007 - 14:21 Uhr

Danke für die schnelle Antwort.

Wen interessierer heute so ein minimaler Speicherverbrauch?

Stimmt. 😉

27.07.2007 - 14:07 Uhr

Mir ist klar, dass eine andere Form der Datenhaltung bei großen Dateien Sinn macht. Aber rein interessehalber trotzdem die Frage:

Wollte ich z.B. eine Textdatei mit etwa 10 mb Inhalt, sagen wir Kundennr in den Speicher lesen und dort halten, könnte ich dieses z.B. mit einem string[] bewerkstelligen (also möglichst simpel um overhead zu sparen).
Allerdings kostet mich dieses dann in der Realisierung trotzdem in etwa 45 mb ram-speicherbelegung (habe dieses mal getestet).

Was mich also interessiert ist "woher kommt dieser overhead ?"
Die Textdatei liegt doch lediglich unkomprimiert in utf-8 vor.
Liegt dieses vllt. and den encodierungs-informationen ?
Und könnte man den Speicherbedarf noch irgendwie drücken ?

Danke im Voraus !

Gruß Diver

27.07.2007 - 09:44 Uhr

Ich erzeuge ein connection object danach ein neues parametrisiertes command objekt, öffne die connection, compiliere das command und starte dann die inserts in einer schleife. In der schleife verändere ich nur die values der einzelnen parameter. Vor jedem Schleifendurchlauf lösche ich "alte" parameter aus dem command-objekt.

Auf eine Transaktion habe ich bisher verzichtet, diese ist jedoch in einer Endlösung vorgesehen.

26.07.2007 - 20:08 Uhr

verwendetes Datenbanksystem: MS Access Db (1x .mdb-file)
Data provider: OleDb

Wie kann ich am effizientesten etwa 1 mio Inserts auf eine MS Access DB
mit OleDb realisieren, bzw. 1 mio Einträge in die Datenbank speichern ? Derzeit verwende ich prepared statements, welche ich in einer Schleife stets mit neuen values versehe. Alle inserts geschehen über connected layer von ado.net. Allerdings ist die Gesamtzeit des Befüllens der Datenbank schlicht um einiges zu langsam. Auch wenn der Insert nur auf eine Tabelle erfolgt, dauert dies zu lange. Wie könnte ich vorgehen um das Befüllen zu beschleunigen. Die Access Datenbank ist Vorgabe. Gäbe ein Wechsel auf ODBC vielleicht einen Performance-Boost. Von OleDb ist mir bekannt, dass im Hintergrund einige COM-Objekte bemüht werden müssen. Für Anregungen wäre ich sehr dankbar.

Gruß Diver

21.04.2007 - 21:51 Uhr

Ich konnte den entsprechenden Fehler finden.
Es lag nicht an dem Encoding sondern daran,
das sich der Stream aufgrund der Validierung nicht mehr am Anfang befand.
Aus diesem Grund auch die Fehlermeldung "Root element is missing.".

Folgende Zeile sollte diesem Abhilfe schaffen:

xmlFileStream.Seek(0, SeekOrigin.Begin);
//danach erst
myXMLDocument.Load(xmlFileStream);

Ich hoffe dies ist für Suchende hilfreich ! 🙂

21.04.2007 - 21:11 Uhr

Ich versuche einen MemoryStream (bei mir z.B. gefüllt mit 167 bytes)
für die Load - Methode des XMLDocuments zu verwenden.

Die bytes sind Bestandteil einer XML welche ich testhalber mit
File.WriteAllBytes("test.xml", xmlFileStream.ToArray());
auf Inhalt geprüft habe (alles wie es sein soll).

Möchte ich jedoch XMLDocument.Load(xmlFileStream) verwenden,
bekomme ich eine Exception mit der Msg: "Root element is missing." .

Ich vermute, dass ich Encoding-Probleme habe, die dieses auslösen.
Welche Möglichkeiten habe ich, um dieses doch zum laufen zu bringen ?

22.02.2007 - 15:46 Uhr

Danke damit kann ich was anfangen. 🙂

22.02.2007 - 15:00 Uhr

Wie müsste ich diese angeben, damit diese gefunden wird ?
Denn vorhanden ist sie ja wie bereits darstellt.

Wichtig ist mir hierbei, ob und wie der Namespace, der Klassennamen und die Methodensignatur beim Aufruf der Methode eingegangen wird.

Da in meinem Fall ja lediglich auf die Methodensignatur für die Referenzierung eingegangen wird. Ist dies nicht ein Informationsverlust ?


[DllImport("Win32Helper.dll")]
        public static extern char
          GetFirstDriveFromMask(int dbcv_unitmask);

22.02.2007 - 14:48 Uhr

Hallo,

Ich habe eine DLL mit dem Namen SystemHelp.dll.
Meine Methode hat folgendes Format:

char SystemHelperVolumeHelperGetFirstDriveFromMask(int)
(Mit dependency - walker ermittelt)

Meine Applikation soll mit dll-import auf die obere Funktion zugreifen:


using System.Runtime.InteropServices;
...
[DllImport("SystemHelp.dll")]
        public static extern char GetFirstDriveFromMask(int cbd_unitmask);

Beim Erstellen bekomme ich jedoch die Nachricht, dass der entrypoint der dll nicht gefunden werden konnte.
Wie muss ich den entry point angeben, so dass ich auf die Funktion der dll zugreifen kann ?

(Das header file (*.h) der source für die dll hat folgende Funktionsdeklaration:

C++ - Code:
namespace SystemHelper
{
    class VolumeHelper
    {
    public: static __declspec(dllexport) char  
GetFirstDriveFromMask(__declspec(dllimport)int unitmask);
    };
}

20.02.2007 - 19:14 Uhr

Ja das war auch genau der letzte "work-around" den ich sah.
Allerdings muss man sich, falls dieses wirklich die einzige Möglichkeit ist, doch
wirklich fragen ob hier nicht grobe design fehler im framework gemacht wurden.

Jedenfalls soweit danke für den Abgleich.

20.02.2007 - 19:01 Uhr

ComponentDispatcher bezieht sich, wie du es ja festgestellt hast nur auf Keyboard messages. Wie sähe dies nun mit z.B. system messages aus.
Gibt es irgendeine vom framework vorgesehene Vorgehensweise für das Verarbeiten von Messages dieser Art ?

20.02.2007 - 18:43 Uhr

Ist es möglich win32 messages mit wpf über z.B. ein
Fenster : System.Windows.Window zu empfangen,
wie dieses bei forms immer mit WndProc möglich war ?

Gibt es unter System.Windows.Window eine Funktion die dieses ermöglicht oder
wie würde man am besten vorgehen um ein win32 message handling für eine gesamte Applikation zu ermöglichen. Falls möglich wäre ich auch für code snippets dankbar.

Gruß Diver

13.09.2006 - 14:50 Uhr

Es lässt sich jetzt mit ziemlicher sicherheit sagen,
dass die bindingSources alle richtig geupdated werden.

Es unterbleibt jedoch aus Gründen die sich mir momentan nicht
erschließen, das update der Controls (z.B. comboboxen) entsprechend
ihrer zugeordneten bindingSources.

Für Ideen bin ich jederzeit offen.

Gruß Diver

13.09.2006 - 13:25 Uhr

Erstmal danke für den schnellen reply.

Ich habe mir die Klasse in der Help ein wenig angesehen. Und Modifikationen an meinem Quellcode vorgenommen:

informationBindingSource.CurrencyManager.List.Add(mySrcObj);
informationBindingSource.CurrencyManager.Refresh();

Wenn ich mit dem debugger einsteige sehe ich, dass das mySrcObj zur internen Liste des currencyManagers hinzugefügt wurde und in der bindingSources`datasource lässt sich der eintrag ebenfalls wiederfinden. D.h. die Elemente wurden erfolgreich hinzugefügt. Jetzt jedoch das aber...

Die Controls die an die informationBindingSource gekoppelt sind, werden nach Beendigung der Methode noch nicht nachgezogen. Kann ich dieses update nicht forcen ?

13.09.2006 - 12:59 Uhr

Hallo,

Ich verwende derzeit BindingSources für meine Form-Controls.
Als DataSources liegen Objekte vor, welche jeweils eine Instanzvariable sind und
entsprechend der Usereingaben ständig geändert werden.

Wie kann ich erreichen, dass die Form-Controls entsprechend der Usereingaben
angepasst werden ?

Bisher habe ich ein Object als Datenquelle Bezeichnung "DatenSrcObject".
Eine BindingSrc mit der Bezeichnung "DatenBindingSrcObject".
DatenSrcObject wird in der Methode "public void UserInputConfirmBttn_Click(...)" entsprechend der Usereingaben geupdated. Soweit so gut.

Wenn ich jetzt versuche mit DatenBindingSrcObject.DataSource = DatenSrcObject
das BindingSrc-DataSource-Objekt upzudaten werden die Veränderungen nicht in den Controls nachgezogen.
Das Form.Validate(), Form.ValidateChildren() hat zum Methodenende ebenfalls keine Auswirkungen.

Woran könnte dies liegen ?

Hilfe sehr willkommen.

Gruß Diver

11.09.2006 - 18:26 Uhr

Hallo,

wie kann ich den Pfad einer "gerade" ausgeführten statischen Klasse zur Laufzeit bestimmen ?

Gruß Diver

05.09.2006 - 21:18 Uhr

Hallo,

mein Problem ist folgendes:

Ich habe eine einfache Form mit Textboxen/Controls.
Diesen Controls habe ich eine BindingSource zugeordnet,
welche auf eine 'System.ComponentModel.BindingList<ObjectType>'
zugreift.

Weiterhin habe ich einen Add-New-Item-Button mit dem ich neue
Eingaben der BindingSource hinzufügen möchte.
Der Button-Eventhandler erzeugt hierbei ein neues Objekt welches
mit dem der 'System.ComponentModel.BindingList<ObjektTyp>' übereinstimmt.

Beim ersten Hinzufügen werden die Werte entsprechend der Erwartung auch dem neuen Objekt hinzugefügt und im Anschluß der BindingSource angehängt.
(über BindingSource.Add(Objekt) )

Ab dem zweiten Hinzufügen stellt sich bei den Attributwerten der hinzugefügten Objekten inkonsistenz ein und zwar noch bevor das zweite Objekt mit BindingSource.Add(Objekt) erreicht wurde. Meine Vermutung ist, dass das Updaten der BindingSource in mehreren Zyklen von statten geht und aus dem Grund Werte der Objekte (vllt. sogar die Objekte selbst) überschrieben werden ?

Welche ausgelösten Event könnten hierfür verantwortlich sein bzw. wie könnte ich dieses Problem angehen ?

Gruß Diver

29.08.2006 - 11:39 Uhr

Ok,
das hilft fürs Verständnis ungemein.

Danke.

29.08.2006 - 11:22 Uhr

Hallo herbivore,

ich denke du hast mit der Erklärung so ziemlich den "Nagel auf den Kopf" getroffen,
zumal der pfad der xml die keine ergebnisse zurücklieferte relativ gesetzt war.
Eine Rückfrage habe ich allerdings noch (dies habe ich nicht ganz verstanden).

..., dass das Arbeitsverzeichnis nicht verändert (bzw. wieder zurückgesetzt wird)

D.h. wenn ich eine eine instanz des OpenFileDialogs verwende, ändert dieser beim Auswählen der Verzeichnisse das momentane Arbeitsverzeichnis von (z.B. "... /projects/debug/ " auf "... /projects/myFiles/ " ) ?
Und mit restore == true setze ich das Arbeitsverzeichnis wieder auf den erst genannten Pfad (... /projects/debug/) ?

29.08.2006 - 11:05 Uhr

Ich hatte Probleme mit der Verwendung des OpenFileDialogs.
Ich habe einen OpenFileDialog einer Form fest zugeordnet (Instanzvariable).
Die Form bleibt während der gesamten Runtime erhalten, wird nur bei Bedarf
"ge-hided" und wieder visible gesetzt. (Nebenfrage: Ist dieses Vorgehen tatsächlich resourcensparender ? oder wäre ein close und dispose mit anschließendem load der form bei aufruf nicht ebenso bedenkenlos zu verwenden ohne das sich dieses in der Performanz niederschlägt ?)

Jedenfalls konnte ich nachdem ich mir die files aus dem OpenFileDialog geholt habe im Anschluß nicht mehr auf andere Files zugreifen (so erhielt ich keine Results wenn ich z.B. auf eine xml zugriff). Hilfe fand ich schließlich beim Property "OpenFileDialogs.RestoreProperty", welches diesen Fehler behob.
Um detaillierte Informationen aus der Help zu beziehen und im Hoffen für eine genauere Erklärung für dieses Verhalten habe ich in der Help nachgelesen und folgendes gefunden :

RestoreDirectory : Ruft einen Wert ab, der angibt, ob das Dialogfeld das vor dem Schließen aktuelle Verzeichnis wiederherstellt

Leider kann ich mit dieser Info nicht sonderlich viel anfangen (z.B. was genau heißt das Verzeichnis wiederherstellen ? für Zugriffe releasen ?)
Vielleicht kann mir jemand genauer erklären was sich abspielt, wenn "RestoreDirectory" auf true|false gesetzt wird.
Meine Vermutung wäre dass das directory bei restore == false weitere Zugriffe "blocked".

Für Hinweise wäre ich sehr dankbar.

Gruß Diver

20.08.2006 - 12:02 Uhr

Hallo,

welchen eventHandler (event) kann ich verwenden um eine tabPage nachdem diese vom user durch clicken der registerkarte aktiviert wurde und bevor diese dann angezeigt wird entsprechend meiner daten "upzudaten" ?

Grund: So möchte ich Daten teilweise erst in die controls der tabPage laden,
wenn diese auch wirklich durch den user geklickt (angefragt) werden.

Gruß diver

14.08.2006 - 20:45 Uhr

Danke für die schnelle (hilfreiche) Antwort (ist ein Grund warum ich das Forum inzwischen zu schätzen weiß 👍)

14.08.2006 - 20:40 Uhr

Hallo,

ich weiß ich bin nicht der erste der eine Frage zur DateTime - Klasse stellt
habe hierzu schon einige Beiträge gelesen.

Zu folgendem Problem konnte ich jedoch noch keine Hilfe finden (sollte es in der Tat schon Beiträge zu dieser Frage geben bitte entsprechende links posten 🙂 Danke):

Wie kann man einen date string mit einem "custom date format" (z.B. yyMMdd) zu einem DateTime-Objekt konvertieren ?

Gruß Diver

11.08.2006 - 21:52 Uhr

Hallo,

ich habe eine kleine Applikation geschrieben (ganz simpel: 1 Form mit 2 Buttons).
Mit einem Button hole ich mir die Dateigröße des files vom FTP-Server mit dem
zweiten lade ich die Datei vom FTP-Server auf meine lokale hdd.

Beide Methoden sind nicht asynchron verfasst ! (für die Analyse des Problems bewußt)
Wenn ich nun Button 1 klicke und nach vollständiger Ausführung der Methode dahinter dann Button 2 klicke bekomme ich vom FTP-Server die Meldung "550 File in use or access denied". Wenn ich Button 1 hintereinander mehrmals klicke läuft alles frei. Genauso kann ich das File mehrmals hintereinander problemlos downloaden.
Die Streams und die FTPWebResponse schließe ich jedesmal in der entsprechenden Methode. Womit könnte ich dieses "Phänomen" dann erklären ?

Konnte das Problem gerade beheben.
Der FtpWebRequest.KeepAlive ist auf false zu setzten um Mehrfachverbindungen zu vermeiden.

09.08.2006 - 18:18 Uhr

Hallo,

ich habe folgendes Problem und hoffe mir kann jemand weiterhelfen,
da ich keinen Ansatzpunkt für die Fehlerbehebung des Problemes finden kann.

Beim Versuch GZip-komprimierte Dateien mit FTPWebrequest zu downloaden,
werden GZip-Dateien die größer sind (bis 1MB konnte ich keine Fehler feststellen)
nicht vollständig gedownloaded. Es unterscheiden sich hierbei die Dateigrößen des gzip-files von der file size auf dem FTP (das weiß ich weil ich die originale vom FTP habe). Ebenso sind die ISO-8859-1 codierten text dokumente (je eins in einem gzip) truncated (brechen vor dem Ende ab). Folgender Code wird zum downloaden verwendet:

            try {
                Uri ftpUri = new Uri(srcFtpURI + fileName);
                if (ftpUri.Scheme != Uri.UriSchemeFtp) {
                    throw new System.Net.ProtocolViolationException("The choosen URI is not that of a FTP-Server !");
                }
                System.Net.FtpWebRequest webReq = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(ftpUri);
                System.Net.FtpWebResponse webRes = (System.Net.FtpWebResponse)webReq.GetResponse();
                System.IO.Stream instream = null;
                System.IO.FileStream outstream = null;
                GZipStream gzipInstream = null;
                GZipStream gzipOutstream = null;
                int bufferSize = 32768; //65536
                byte[] buffer = new byte[bufferSize];
                if (fileName.EndsWith(".gz")) { 
 {
                    try {
                        gzipInstream = new GZipStream(webRes.GetResponseStream(), CompressionMode.Decompress);
                        gzipOutstream = new GZipStream(System.IO.File.Create(destDir + "/" + fileName), CompressionMode.Compress);
                        while ((bufferSize = gzipInstream.Read(buffer, 0, buffer.Length)) > 0) {
                            gzipOutstream.Write(buffer, 0, buffer.Length);
                        }
                    } catch (Exception ex) {  //... 

Ich verwende hierbei den namespace: System.IO.Compression;

Vielleicht hat jmd eine Idee oder ein ähnliches problem bereits gehabt.

Gruß Diver

08.08.2006 - 17:02 Uhr

Du hast vollkommen recht.
Ich scheine heute irgendwie darauf fixiert die TabControl umgehen zu wollen,
aus welchen Gründen auch immer 😉 .

Danke für den Support 👍

08.08.2006 - 13:43 Uhr

Hallo Friedel,

ich habe mir Deinen vorschlag mal genauer angeschaut.
Die Lösung über eine Tabcontrol löst mein Problem tatsächlich eleganter. 👍
Danke dafür. Werde das auf diese Weise auch realisieren.

Eine zusätzliche Frage hätte ich jedoch noch, ist jedoch mehr eine Verständnisfrage (für eventuell noch folgende Situationen):

Ausgehend vom Modell des Windows Explorer Fensters (SplitContainer mit links einer TreeView und rechts einer ListView). Wie würde ich realisieren können, dass bei Auswahl eines TreeNodes, rechts eine andere Panel mit anderen Controls (TxtBoxen, Buttons, etc.) angezeigt wird. (Mir ist klar das beim Windows Explorer Window die rechte Panel stets eine ListView bleibt. Jedoch ließe sich der Inhalt der rechten Seite des SplitContainers flexibel anpassen ? z.B. einmal ListView dann PictureBox, dann wieder ListView je nachdem welchen TreeNode der User auswählt ?).

Gruß diver

08.08.2006 - 11:41 Uhr

Wenn ich mit jedem button im Tool Strip eine eigene content view assoziieren wollte, wie dieses z.B. im Firefox vorkommt

Firefox: Extras > Einstellungen
(Tool Strip oben und assoziierte view darunter)

würde ich das wie am geschicktesten anstellen ?
Mein Ansatz wäre gewesen mehrere Panels zu erstellen (ein panel pro view)
und diese entspr. den clicks visible = false/true zu setzen.

Wäre für andere Vorschläge dankbar. Mir scheint mein Ansatz ziemlich "zurechtgestöpselt" 🙄 .

Ein Problem, welches sich mit dem obigen Ansatz ergibt ist u.a. :

Lege ich 2 Panels übereinander (jedes repräsentiert eine view)
und ergänze ich folgenden code:

        private void toolStripButton1_Click(object sender, EventArgs e) {
            panel1.Show();
            panel2.Hide();
        }

        private void toolStripButton2_Click(object sender, EventArgs e) {
            panel2.Show();
            panel1.Hide();
        }

Wird panel 2 nachdem zuvor panel 1 sichtbar war nicht mehr angezeigt.
Woran könnte dieses liegen ? Wird vielleicht beim "Darüberlegen" von panel 2 auf panel 1 panel 2 dem panel 1 hinzugefügt und ist nicht mehr visible zu bekommen, da es in panel 1 liegt und dieses visible = false ist ?

06.08.2006 - 12:44 Uhr

ok
problem gelöst && frage beantwortet 🙂

06.08.2006 - 11:43 Uhr

Wie initialisiere ich eine Form (die mir einen Ladevorgang anzeigen soll),
so dass meine main form gelockt und erst nach ablauf des ladevorgangs und nachdem die ladevorgangs form geschlossen wird wieder zur verfügung steht ?

15.07.2006 - 22:51 Uhr

Habe dies noch angepasst und es läuft jetzt einwandtfrei 👍 .
Von meiner Seite ein großes Dankeschön,
wäre vermutlich hier ohne support hängen geblieben !

Wollte noch zum Abschluß fragen ob es vllt. zu diesem Thema (InstallerKlassen, Erstellung, etc.) gute online resourcen gibt oder wie man sich diesbzgl. informieren kann (vllt. auch zum setup life cylce) ? Ist bis jetzt nämlich das erste mal,
dass ich mich von der ms help nicht rundum abgedeckt fühlte.

Gruß diver

15.07.2006 - 13:53 Uhr

Ich habe die Veränderungen dementsprechend angepasst:

using System;
using System.ComponentModel;
using System.Configuration.Install;

namespace SomeNameSpace {
[RunInstaller(true)]
public class SetupSupport : Installer {
public SetupSupport() {
}
// Override the 'Commit' method of the Installer class.
public override void Commit(System.Collections.IDictionary mySavedState) {
base.Commit(mySavedState);
Console.WriteLine("The Commit method of 'SetupSupport'"
+ "has been called");
}
}
}

Im Anschluss bei benutzerdefinierten Aktionen im Commit Ordner abgelegt.
Der Entrypoint (bei mir 'Commit') wurde nach meinem Kenntnis stand ebenfalls gefunden. Ich habe beim testen des Setups (bei der Installation) nur ein Problem festgestellt. Ich bekomme beim Setup folgende Fehlermeldung:

"Die Datei C:...\SetupSupport.InstallState konnte nicht gefunden werden".

Woran könnte dieses wohl liegen ?

Gruß Diver

14.07.2006 - 12:34 Uhr

Kontext meiner Frage:
Generell:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.de/dv_deploy/html/208ca054-b2bd-4d27-a64d-79ba153c8d78.htm
Problem:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.de/dv_deploy/html/e204310e-1f15-4efb-ac40-ce5c97ba4514.htm

Bei der Erstellung einer Setup - Datei aus einem Projekt ist es möglich benutzer definierte Aktionen anzugeben welche zu einem bestimmten Zeitpunkt der Installation ausgeführt werden sollen. Diese Aktionen können z.B. exe oder dll files sein.

Die Verwendung von exe files bereitet mir dabei keine Probleme jedoch möchte ich auf dlls zurückgreifen. Hierzu auch die Frage:

Bei der Angabe über den "Benutzerdefinierte Vorgangseigenschaften-Editor" des "entryPoint (Einstiegspunktes)" der dll bekomme ich bei der erstellung des setup projektes stets die Fehlermeldung, dass dieser in der angegebenen dll nicht gefunden werden konnte. Der Einstiegspunkt ist bei mir eine public static void methode.
In welchem Format ist diese als entrypoint anzugeben ?

Namespace.ClassName.Method ?
ClassName.Method ?
(habe so ziemlich alle Kombinationen auch Method() durchprobiert)

Muss ich im code der dll die methode vllt als einstiegspunkt markieren bzw.
auf Besonderheiten für die dll - Erstellung Rücksicht nehmen ?

Ich habe bereits sämtliche docs der ms help durch deswegen hoffe ich hier auf Hilfe.
X(

Gruß diver