Laden...
-
-acid- myCSharp.de - Member
Fachinformatiker Hessen Dabei seit 07.05.2004 885 Beiträge
Benutzerbeschreibung

Forenbeiträge von -acid- Ingesamt 885 Beiträge

13.02.2006 - 15:14 Uhr

Hi sven22,

ich bin mir zu 99,9% sicher soetwas bei codeproject.com gesehen zu haben 🤔

13.02.2006 - 15:11 Uhr

Ich befasse mich auch seit einigen Wochen damit. Als Lösung dafür, habe ich mir einfach ein Panel überschrieben und es mir selbst als Control nachgebaut.

02.02.2006 - 12:44 Uhr

@Friedel: Wenn ich aber auf die Leiste klicke und gedrückt halte, ändert sich die Opacity erst nach kurzer Zeit. Das finde ich sehr unschön.

01.02.2006 - 16:28 Uhr

Danke Pako. werde es mal ausprobieren 🙂

30.01.2006 - 10:05 Uhr

Also das ist ganz einfach eine ToolBar bzw. ein ToolStripcwie progger schon sagte. Man überschreibe einfach den ToolStrip(Item)Renderer und fertig.

25.01.2006 - 15:42 Uhr

Hallo,

das gleiche Thema hatte ich vor einigen Wochen auch schon eröffnet. Leider kam dort keine 100%ige Lösung heraus. Musst mal suchen. Wenn du was findest melde dich mal, würde mich nach wie vor interessieren.

24.01.2006 - 16:00 Uhr

Auch wenn ich mich mit ASP überhaupt nicht auskenne, aber langjährige Erfahrung in PHP/MySQL, etc habe, kann ich dir nur abraten das so zu machen. Gerade wegen der Orientierung hat die Adressleiste ihren Sinn.

24.01.2006 - 14:39 Uhr

Der History sei Dank 8)

Schau mal hier: Beibehalten von Anwendungseinstellungen in .NET Framework

Da sollte das Wesentliche enthalten sein. Kannst gerne fragen wenn was ist 🙂

// EDIT: Oh Doppelpost, sorry.

24.01.2006 - 14:34 Uhr

Bin momentan kaum zuhause wegen Umzug. Aber ich guck mal im Internet. Hab nen Teil von der MSDN... melde mich.

24.01.2006 - 12:25 Uhr

Also nochmal zum Verfahren: Ich würde dir empfehlen eine kleine XmlSettings-Klasse zu schreiben die LoadSettings, LoadDefaultSettings und SaveSettings enthält und die XmlSerializer-Klasse benutzt. So kommst du parallel mit Feldern in Begegnung (hat mir viel gebracht).

24.01.2006 - 07:55 Uhr

Hallo herbivore,

wie schon sicherlich bekannt eine tolle Sache, aber einfach noch nicht dynamisch genug. Siehe dazu meinen Beitrag. Ich habe mir daher kurzerhand eine eigene Settingsklasse erstellt, die dem 2.0er sehr ähnelt. Auch die Sache mit dem "ToString()" etc. erledigt sich dadurch. Damit kann ich dann einfach jeden, oder sagen wir die meisten, Datentypen in meine Klasse werfen und wieder auslesen. Es gibt nur eine .config Datei die heißen kann wie sie will und liegt jeweils im UserApp Ordner.

bigdaddy86 sollte sich daher vorher gut überlegen, wie er die SettingsKlasse einsetzen will. Ganz im Gegenteil zu mir, ich habs verpennt und hab erstmal was gebaut was nix war, dann das 2.0er ausprobiert und bin doch wieder bei ner ganz neuen Klasse angelangt. 🤔

23.01.2006 - 09:58 Uhr

Programmierhans das verstehe ich nicht. Gibt es bei den WEbcontrols ein IPAddress Objekt? (Habe mit WebControls noch nie was gemacht).

23.01.2006 - 07:31 Uhr

Vielleicht gibt es einen WindowsXP Home/Prof. Unterschied?! ?(

18.01.2006 - 09:26 Uhr

Hallo Leute,

man nehme zb. den RessourceHacker öffne zb. die shell32.exe oder die explorer.exe, etc. Dort kann man jede Ressource zb. als Icon speichern bzw. als Bitmap. Das Umwandeln in ein andres Format wie zb. png (wegen der Transparenz) übernimmt gerne Photoshop etc.

Diese Bitmaps könnten dann in die Imagelist eingebunden werden.

18.01.2006 - 08:00 Uhr

@ikaros: Mich würde die "genauere" Methode interessieren...

18.01.2006 - 07:57 Uhr

Hallo thepaul,

ich bin mir nicht 100% sicher ob es für DirectoryInfo.GetFiles() auch geht, aber ich bin mir sicher, hier im Forum mal eine Lösung dafür gesehen zu haben, wie man den SearchPattern erweitert.

17.01.2006 - 14:05 Uhr

Gibt schon jede Menge hier im Forum. Außerdem such mal bei codeproject.com zb. nach Wizard.

17.01.2006 - 10:24 Uhr

zunächst: "." ist Dos-Steinzeit und bewirkt unter Windows nicht das Gewünschte. Verwende "*".

Ja, hast du ja schonmal erwähnt. Hoffe den Fehler mache ich nicht nochmal. Danke 🙂

Bist du dir sicher, dass eine WinIoException kommt?

Du hast mir mal wieder das Gegenteil bewiesen. Es kommt eine "UnauthorizedAccessException". Damit kann ich eine benutzerfreundliche Meldung ausgeben. Thanks too.

ich hab in der schnelle nicht gelesen, ob da das Problem mit versteckten Systemordnern gelöst wurde, aber schau mal hier

Bringt mir nichts. Ich mache das schon fast so, aber trotzdem danke.

frisch, eine gute Lösung. Ich denke ich werde in einer der nächsten Versionen die Methode erweitern. Momentan sollte das Zielverzeichnis halt keine Zugriffsgeschützten Ordner enthalten.

Danke euch allen 🙂

16.01.2006 - 20:28 Uhr

*lol* schick mal den Downloadlink 😁

16.01.2006 - 19:00 Uhr

Nein.

16.01.2006 - 18:33 Uhr

S.H.-Teichhof,

nein leider nicht. Das die sich unterscheiden weiß ich, aber wenn ich wieder in den normalen Modus zurückkehre, sind teilweise die Panels in der Größe verschoben. Komisch ne.

16.01.2006 - 16:06 Uhr

Hey Leute,

ich wollte euch mal fragen, was ihr zu meinem Problem sagt:

Ich lese mit

string[] Files = Directory.GetFiles(Path, "*.*", SearchOption.AllDirectories);

ein Verzeichnis aus, damit ich später die Größe dessen berechnen kann. Wenn ich zb. "C:" übergebe, bleibe ich an System Volume Information hängen, weil ich ja keine Rechte drauf habe. Genauso geht es mir teilweise bei Ordnern im Netzwerk. Ich habe im Forum etwas gesucht und dort nur gefunden, dass es auch korrekt sei keinen Zugriff auf System Volume Information zu haben.

Jetzt wollte ich mich ein bisschen um die Fehler die auftreten könnten kümmern und benutzerfreundliche Fehlermeldungen ausgeben.

DirectoryNotFoundException wenn der Ordner nicht gefunden wurde.

Ich habe mal geschaut, welche Exception kommt, wenn ich keinen Zugriff habe und zwar die WinIoException, die ich aber in meinen Exceptions nicht auswählen kann und daher mit die Möglichkeit entgeht, den Fehler korrekt abzufangen.

Als Workaround dachte ich mir, einfach selbst eine rekursive Methode zu schreiben, die mir die Ordner alle ausließt (ist kein Problem) und dort abzufragen, ob ich überhaupt Rechte auf den Ordner habe.

Leider weiß ich
a) nicht wie ich herausfinde, ob ich überhaupt Rechte auf den Ordner habe ihn nach der Größe zu fragen.
b) nicht ob das überhaupt sinnvoll ist, da im Falle der Netzwerkabfrage ja Speicherplatz nicht einberechnet wird, weil ich ja die Ordner einfach weglassen würde wenn ich keine Rechte darauf habe und somit die Größenangabe nicht korrekt ist.

Könntet ihr mir mal eure Meinung dazu sagen?

P.S.: Nach Möglichkeit keine WinApis...

16.01.2006 - 12:06 Uhr

Ich verstehe dein Problem nicht ganz. Wenn du ein Control hast, dann kannst du die Länge mit Control.Text.Length abfragen. Oder meinst du die Breite in Pixel? Das geht mit MeasureString().

16.01.2006 - 11:10 Uhr

Cool, aber in der Express nicht vorhanden, finde ich die SolutionLine.

16.01.2006 - 09:00 Uhr

Ist diese empfehlenswert?

Also ich bin sehr begeistert. Auch der Desinger macht richtig viel Spass. Ich habe nur einen recht nervigen Bug entdeckt: Wenn man den Debugmodus startet, werden oftmals die Panels (Properties, Solutionsexplorer, etc.) wild verstreut bzw. in der Größe verändert. Als Workaround mache ich es immer so, dass ich F6 oder rechte Maustaste+Build auf dem Projekt drücke und dann immer in der Taskleiste in meinen Ausgabeordner gehe und dort die Exe starte. Hat halt zur Folge, dass ich keine Zeilen bei Fehlern angezeigt bekomme. Da muss dann doch die IDE her.

und gibt es diese auch schon in Deutsch?

Ja, such mal im Forum. Ich habe versucht sie zu installieren, allerdings kommt bei mir beim starten der setup.exe ein Fehler, wo mir noch niemand helfen konnte.

15.01.2006 - 19:19 Uhr

Sorry war nicht meine Absicht:

Wollte nochmal sagen das es jetzt geht und den Code nochmal zusammenfassen:

string Size = Info.GetSize(new DirectoryInfo(this._MyPath)).ToString();
if (Size != null)
  WaitForm.Invoke(new SetTextDelegate(this.Size), new object[] { Size });

if (WaitForm != null)
  WaitForm.Invoke(new SetDialogResultDelegate(WaitForm.SetDialogResult), new object[] { DialogResult.OK });

Danke. Habe eben nochmals bei meiner Freundin erwähnt wie hilfreich mycharp bzw du bist. Ohne euch wäre ich arm dran 👍

15.01.2006 - 19:10 Uhr

Das ist doch sowieso schon drin und funktioniert alleine nicht.

15.01.2006 - 19:06 Uhr

... also habe ich das mal erweitert:

string Size = Info.GetSize(new DirectoryInfo(this._MyPath)).ToString();
if (Size != null)
WaitForm.Invoke(new SetTextDelegate(this.Size), new object[] { Size });

Korrekt?

15.01.2006 - 19:01 Uhr

Aaaaalso 🙂

Das sind meine Operationen (natürlich mehrmals und in unterschiedlichen Formen):


string Size = Info.GetSize(new DirectoryInfo(this._MyPath)).ToString();
WaitForm.Invoke(new SetTextDelegate(this.Size), new object[] { Size });

Dahinter steckt eine statische Klasse die zb. die Größe eines Pfades zurückgibt.

Diese Operationen werden ja abrubt durch das "X" abgebrochen und ich denke mir da knallt es. Wenn ich nämlich die Operationen auskommentiere, geht es.

15.01.2006 - 18:50 Uhr

Habe es eben in ein neues Projekt gebaut. Der Code den ihr kennt funktioniert sauber. Das Problem liegt in an meinen Operationen die ja dann dadurch abgebrochen werden. Was gibt es da für eine Lösung? Einfach auf den Rückgabewert der Operationen prüfen und bei nicht korrekten Rückgabewert einfach

WaitForm.Invoke(new SetDialogResultDelegate(WaitForm.SetDialogResult), new object[] { DialogResult.Cancel });

zu machen? Eigentlich müsste doch die WaitForm durch Abbruch (X) auch den Dialogresult.Cancel wiedergeben oder?

15.01.2006 - 15:33 Uhr

Geht nicht.

WaitThread = new Thread(new ThreadStart(StartWait));
WaitForm = new frmWait();
IntPtr h = WaitForm.Handle;
WaitThread.Start();
WaitForm.ShowDialog();
WaitForm = null;
if (WaitForm != null)
   WaitForm.Invoke(new SetDialogResultDelegate(WaitForm.SetDialogResult), new object[] { DialogResult.OK });
15.01.2006 - 15:29 Uhr

Singleton... ok jetzt weiß ich was es ist. Danke 🙂

15.01.2006 - 15:23 Uhr

WaitForm.Close(); ist draußen.

Beim Invoke habe ich jetzt geschrieben:

if (!WaitForm.IsDisposed)
     WaitForm.Invoke(new SetDialogResultDelegate(WaitForm.SetDialogResult), new object[] { DialogResult.OK });

Es geht aber immer noch nicht.

15.01.2006 - 15:17 Uhr

a) Ja ich benutze das 2.0er Konfigurationsmodell. Das "zur Verfügung stellen" würde dann so funktionieren, dass ich ein Modul (xyz.dll) habe, welches eine SettingsClass zur Verfügung stellt. Die andren Module müssten dann die xyz.fll referenzieren?

b)

Du könntest die Klasse MyApplicationSettings auch als Singleton realisieren (mal eine der wenigen Stellen, wo so ein Singleton Sinn macht). Dann tun sich die Module mit dem Zugriff noch leichter.

Oh damit redest du für mich in Rätseln. 🤔

15.01.2006 - 14:58 Uhr

Ah also erzeuge ich einfach eine neue Buttoninstanz names btnCopy. Ok danke 🙂

15.01.2006 - 14:56 Uhr

Also an den drei, vier Zeilen Code zu urteilen, wo der Fehler jetzt liegt, ist ziemlich schwierig. Besonders, wenn thread benutzt werden.

WaitThread = new Thread(new ThreadStart(StartWait));
                WaitForm = new frmWait();
                IntPtr h = WaitForm.Handle;
                WaitThread.Start();
                WaitForm.ShowDialog();
                WaitForm.Close();
private void StartWait()
        {
            try
            {
                // Hier werden Operationen durchgeführt...

                WaitForm.Invoke(new SetDialogResultDelegate(WaitForm.SetDialogResult), new object[] { DialogResult.OK });
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

WaitForm:

 public partial class frmWait : Form
    {
        public frmWait()
        {
            InitializeComponent();
        }

        public void SetDialogResult(DialogResult pDialogResult)
        {
            this.DialogResult = pDialogResult;
        }
    }

Brichst du den Thread mit Abort ab?

ich benutze das "X" des Dialogs der Waitform.

15.01.2006 - 14:51 Uhr

*gg* nicht Engine... Eigene 😉

Also nochmal:

Da mein Programm modular aufgebaut ist (Referenzierungen von Dlls und Einbinden über Interfaces) benötige ich die Einstellungen in vielen Modulen (unter Anderem im Hauptprogramm). Und ich möchte ungerne für jedes Modul eine Einstellungsdatei erzeugen.

15.01.2006 - 14:46 Uhr

Ja sie ist null.

a) Wie wie setze ich diese Variable auf den richtigen Button? Mit this.btnCopy = this.btnCopy; ?!
b) Wie ich bereits sagte, spricht Einiges dafür eine eigene Methode zu verwenden. Daher denke ich ist es wirklich sinnvoller mich nochmal mit meiner eigenen Kopierroutine zu beschäftigen.

15.01.2006 - 14:43 Uhr

Also wie ich schon sagte, die Meldung kommt (sofern der Thread erfolgreich zuende läuft) garnicht mehr. Auch wenn ich das WaitForm.Handle weglasse. Wenn ich aber jetzt den Thread abbreche, kommt die Meldung (vorher nicht getestet). Also habe ich das Handle wieder reingenommen, aber es kommt immer noch.

WaitForm = new frmWait();
IntPtr h = WaitForm.Handle;  // <<<================
WaitThread.Start();
WaitForm.ShowDialog();
14.01.2006 - 16:03 Uhr

Da keiner Rat weis, werde ich also doch zu meiner eigenen Klasse greifen.

14.01.2006 - 16:00 Uhr

Habe die Zeilen weggelassen. So geh es jetzt. Bin aber noch wie vor am überlegen ob ich nicht doch - wie herbivore schon sagte - zu meiner alten eigenen Kopiermethode zurückgreife. Die ist zwar nicht so konfortabel, aber ich habe ein Dialogfenster, damit der User nicht mehr auf die Hauptform zugreifen kann und ich habe mehr Kontrolle über das was ich anzeige und mache. Außerdem bin ich unabhängig von WinApis.

Danke für eure Hilfe 🙂

14.01.2006 - 15:56 Uhr

Hey,

ich muss diese Thema leider nochmal aufgreifen: Wenn ich jetzt die Refernzierung auf das Hanlde weglasse geht es komischerweise.

Nun ist mir aber etwas Andres aufgefallen:
Wenn ich das Dialogfenster schließe, kommt nach etwa 5 Sekunden die gleiche Fehlermeldung. Woran liegt das nun wieder? Achja: Wenn ich das Handle wieder reingeschreibe merke ich keine Unterschied. Der Code ist immer noch der Gleiche.

14.01.2006 - 13:18 Uhr

Ah. StackTrace... habe den mal ausgeben lassen:

try
            {
                //this.btnCopy.Enabled = false;
                this._ShellCopy.OwnerWindow = this.Handle;
                this._ShellCopy.Copy();
                //this.btnCopy.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + " \r\n\r\n" + ex.StackTrace);
            }

Wenn ich nun die zwei Zeilen, die den Button erst deaktiviert und dann wieder aktiviert, ausblende geht es. Ich verstehe aber nicht was ich falsch mache bzw. warum es dann nicht funktioniert wenn die zwei Zeilen wieder eingebunden werden.

13.01.2006 - 23:20 Uhr

Also ich habe nochmal geschaut. Komischerweise gehts im Debugmodus aus VS heraus ohne Fehler. Der Fehler tritt nur beim Einzelaufruf der exe auf. Wie kann ich denn den Fehler lokalisieren? Achja: Der Click des Buttons ist einfach nur ein stink normales Buttonevent, welche die Kopierroutine aufruft. Der Code ist also genau der gleiche wie unten...

13.01.2006 - 12:06 Uhr

Standartfenster

Standard heißt das 😉

12.01.2006 - 22:17 Uhr

übersetz mal im Debug-Modus.

Was heißt das? Ich benutze bereits den Debugmodus. Dort wird eine dll erstellt, die in meinem Hauptprojekt referenziert wird. Gibt es eine bessere Möglichkeit zu debuggen um genau die Zeile angezeigt zu bekommen?

12.01.2006 - 21:37 Uhr

Habe mir gerade eine Demo Application geschrieben. Dort funzt es:

//Quelle wählen
private void button2_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fb = new FolderBrowserDialog();

            if (fb.ShowDialog() == DialogResult.OK)
            {
                string[] SourcePath = { fb.SelectedPath + "*" };
                this.sc.SourceFiles = SourcePath;
            }
        }

//Ziel wählen
        private void button3_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fb = new FolderBrowserDialog();

            if (fb.ShowDialog() == DialogResult.OK)
            {
                string[] DestPath = { fb.SelectedPath };
                this.sc.DestFiles = DestPath;
            }
        }

Dort habe ich dann auch noch noch Buttn der das Kopieren ausführt. Den gleichen Code habe ich in eine andre Anwendung übernommen und bekomme beim Abbrechen des Kopierendialogs folgenden Fehler:

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
at fastInstall.plgnDataSource.button3_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Könnt ihr mir helfen?

12.01.2006 - 20:50 Uhr

Kommentare werden bei mir mit ";" eingeleitet (habe ich aber auch im Regex abgeändert). Wie schon geasgt, der zweite Regex funzt bei mir nicht. Aber ich schaue nochmal...

12.01.2006 - 17:27 Uhr

Danke herbivore 👍