myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns
» Datenschutzerklärung
» Impressum

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Gemeinschaft » .NET-Komponenten und C#-Snippets » CustomFileDialog
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

CustomFileDialog

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland


dr4g0n76 ist offline

CustomFileDialog

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

EDIT: im aktuellsten Post könnt ihr euch jetzt einen nachprogrammierten FileDialog downloaden.


Beim FileDialog stört es, dass man keinen ViewStyle für die ListView auswählen oder die Größe und die Position nicht verändern kann.

Deswegen habe ich diesen Wrapper gemacht.

Da ich es nicht hinbekomme ein Preview einzubauen momentan,
vielleicht postet ja hier jemand wie man das hinbekommen könnte...

Der Aufruf geschieht folgendermaßen:

fileDialog.SetBounds(new Rectangle(0, 0, 10110, 11100));
TextBox tb = new TextBox();
tb.Location = new Point(100, 100);
tb.Dock = DockStyle.Fill;
fileDialog.Controls.Add(tb);
fileDialog.ShowDialog();

zudem muss in der Form von der der FileDialog aufgerufen wird,

C#-Code:
        protected override void WndProc(ref Message m)
        {
            fileDialog.WndProc(ref m);
            base.WndProc(ref m);
        }

geschrieben werden, sonst funktioniert das ganze nicht...

über FileDialog.Controls.Add(Control) können alle CSharp-Controls hinzugefügt werden.

z.B.

C#-Code:
TextBox tb = new TextBox();
tb.Dock = DockStyle.Fill;
tb.Location = new Point(10,10);
FileDialog.Controls.Add(tb);

der Bezugspunkt von Location ist immer die Linke/Obere Ecke des FileDialogs.


Dateianhang:
unknown CustomFileDialog.rar (6,06 KB, 710 mal heruntergeladen)

Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von dr4g0n76 am 02.06.2006 14:14.

31.05.2006 20:06 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

CustomDrawnFileDialog

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

So, da selbst mit dem Subclassing und Hooks des FileDialogs Grenzen gesetzt sind,
habe ich jetzt einen eigenen FileDialog begonnen zu machen, den ich für meine Anwendung brauche.

Es fehlt zwar noch viel aber ich habe beschlossen ihn trotzdem zu posten, dann können noch Wünsche einfließen.

Was noch reinkommen wird, sind alle Properties von der .NET-FileDialog-Klasse

- ein Preview (ist schon drin, funktioniert aber noch nicht richtig)
- evtl. eine TreeView, falls gewünscht

Was fehlt noch?

Einiges.

- ComboBox für Suchen in funktioniert noch nicht.
- AutoVervollständigen für cobFileName wie im Windows-FileDialog fehlt noch
- Mehrfachauswahl hat noch Fehler...
- Optimierung (Threading) für Laden der Strukturen
- FileInfo mit Größe, Schreibgeschützt usw.
- Ansichten umschalten
- Detailliste

uvm.

Was geht schon?

- Dateinamen anklicken und übernehmen
- DialogResult abfragen
- Ordnernamen in cobFileName eintippen und durch Return/Öffnen direkt in dieses Verzeichnis gehen.

momentan ist dies das ganze projekt zum ausprobieren.


Dateianhang:
unknown CustomDrawnFileDialog.zip (118,14 KB, 485 mal heruntergeladen)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dr4g0n76 am 02.06.2006 12:08.

02.06.2006 12:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

Neuere Version

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

So, vorerst die neueste Version:

Ach ja, die Icons werden natürlich auch noch geändert und es kommt noch ein DropDownButton oben rechts rein


Dateianhang:
unknown CustomDrawnFileDialog.rar (120,38 KB, 456 mal heruntergeladen)
02.06.2006 12:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

hier ein screenshot:

dr4g0n76 hat dieses Bild (verkleinerte Version) angehängt:
Screenshot.jpg
Volle Bildgröße

02.06.2006 12:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Letztes update für heute:

die linke Seite (bis auf Netzwerkumgebung) funktioniert jetzt auch.

EDIT: Neue Version. Kleine Fehler korrigiert, kann jetzt auch ohne Icons aufgerufen werden.


Dateianhang:
unknown CustomDrawnFileDialog.rar (136,36 KB, 483 mal heruntergeladen)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dr4g0n76 am 04.06.2006 14:18.

02.06.2006 13:26 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Die nächste Version erscheint erst, wenn alle Icons richtig sind, und das Programm fertig getestet ist.

Zuletzt kommt noch diese Ansicht hinzu:

dr4g0n76 hat dieses Bild (verkleinerte Version) angehängt:
Screenshot2.jpg
Volle Bildgröße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dr4g0n76 am 04.06.2006 14:48.

04.06.2006 14:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MagicAndre1981 MagicAndre1981 ist männlich
myCSharp.de-Mitglied

avatar-2623.jpg


Dabei seit: 16.05.2005
Beiträge: 906
Entwicklungsumgebung: Visual Studio 2005 Prof/ #d2.1
Herkunft: Nordhausen


MagicAndre1981 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Mal 'ne Frage. Warum bastelst du was neu, was es schon lange gibt? verwundert
04.06.2006 17:27 Beiträge des Benutzers | zu Buddylist hinzufügen
progger progger ist männlich
myCSharp.de-Poweruser/ Experte

avatar-2094.gif


Dabei seit: 05.08.2005
Beiträge: 1.271
Entwicklungsumgebung: Visual Studio 2005; #develop 2
Herkunft: Nähe von München


progger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hat er doch oben geschrieben.
04.06.2006 17:40 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

EDIT: @MagicAndre1981

Z.B. weil es für viele schwer ist in C# einen Hook für den FileDialog zur Dateivorschau zu implementieren. Ist doch ein Grund...

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dr4g0n76 am 27.06.2006 17:52.

27.06.2006 17:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 8 Monate.
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Resourcen eingebettet und InitialDirectory korrigiert.


Dateianhang:
unknown CustomFileDialog.rar (243,48 KB, 552 mal heruntergeladen)
08.03.2007 12:29 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

PreviewFileDialog basierend auf OpenFileDialog (OpenFileName)

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zum später kommenden Artikel hier schon mal die Komponente:

S


Dateianhang:
unknown CustomizableDialogs.rar (103,02 KB, 529 mal heruntergeladen)
09.03.2007 17:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
dr4g0n76
myCSharp.de-Poweruser/ Experte

avatar-1768.jpg


Dabei seit: 07.07.2005
Beiträge: 2.874
Entwicklungsumgebung: SharpDevelop/VS.NET
Herkunft: Deutschland

Themenstarter Thema begonnen von dr4g0n76

dr4g0n76 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Screenshot:

dr4g0n76 hat dieses Bild (verkleinerte Version) angehängt:
Screenshot.jpg
Volle Bildgröße

09.03.2007 17:22 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegt mehr als ein Jahr.
steffen_dec steffen_dec ist männlich
myCSharp.de-Mitglied

avatar-701.gif


Dabei seit: 27.03.2007
Beiträge: 322
Entwicklungsumgebung: VS2015 Ent


steffen_dec ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo dr4g0n76,

ich muss deinen Beitrag rausholen großes Grinsen

Ich benutze in meinem Programm den Standard-OpenFileDialog/SaveFileDialog.

Nun möchte ich den Zugriff auf bestimmte Laufwerke (z.b. C:\ und D:\) zur Laufzeit (Benutzerabhängig) sperren.

Dass geht ja mit den windowseigenen Mitteln leider nicht... Deshalb brauche ich einen eigenen Dialog oder?

Vielleicht hast du ja eine Idee? Du hast dich ja mit dem FileDialog beschäftigt...

Ich habe auch deinen nachgebauten Dialog (customFileDialog) getestet, irgendwie kommt bei mir nichts gscheides raus. Hast du vielleicht ein Demo Projekt wo dieser verwendet wird?

Ich möchte mit dem Dialog erreichen dass bestimmte Benutzer (Programminterne Benutzer) am Dateisystem nicht manipulieren sondern z.b. eine Datei (Backup) abspeichern können (ggf auch auf einem USB-Datenträger).

Ich danke dir im Voraus für deine Zeit :-)

Viele Grüße
Steffen
27.05.2008 16:16 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
winSharp93 winSharp93 ist männlich
myCSharp.de-Poweruser/ Experte

avatar-2918.png


Dabei seit: 19.01.2007
Beiträge: 5.742
Herkunft: Stuttgart


winSharp93 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo steffen_dec,

deine Frage wäre eigentlich schon einen eigenen Thread wert

Bestimmte Ordner / Dateien für den User über den OpenFileDialog bzw. SaveFileDialog vor Veränderungen zu schützen ist IMHO keine gute Idee - prüfen lieber nach Auswahl der Datei/des Ordners, ob der Zugriff erlaubt ist. Noch besser wäre sogar, Windows-Eigene Mittel zu nutzen, um bestimmten Computerbenutzern die Schreibrechte für einen Ordner zu entziehen - dann kann wirklich nichts schief gehen.

Zitat:
nichts gscheides raus

Was bedeutet das konkret? Exceptions?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von winSharp93 am 28.05.2008 21:17.

28.05.2008 21:16 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
steffen_dec steffen_dec ist männlich
myCSharp.de-Mitglied

avatar-701.gif


Dabei seit: 27.03.2007
Beiträge: 322
Entwicklungsumgebung: VS2015 Ent


steffen_dec ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich möchte in dem Filedialog entweder bestimmte Laufwerke gar nicht anzeigen. oder die Windows-Funktionalitäten (wie kopieren, löschen, ausschneiden, erstellen usw) deaktivieren bzw. abfangen.

Windowseigene mittel kommen nicht in Frage da ich vom Programm aus überall Zugriff brauche. Die Benutzer unterscheide ich bei mir im Programm intern (eigene Benutzerverwaltung).

ich habe das control von dr4g0n76 ausprobiert und auf einer Form aufgezogen dann sieht es so aus wie auf dem Bild (auch zur Laufzeit)

Vielleicht kennt ja jemand ein anderes FileDialog welchen man anpassen kann. Sonst muss ich wohl oder übel das Rad neu erfinden großes Grinsen

Danke
Steffen

steffen_dec hat dieses Bild (verkleinerte Version) angehängt:
CustomFileDialog_screen.jpg
Volle Bildgröße

29.05.2008 10:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
steffen_dec steffen_dec ist männlich
myCSharp.de-Mitglied

avatar-701.gif


Dabei seit: 27.03.2007
Beiträge: 322
Entwicklungsumgebung: VS2015 Ent


steffen_dec ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

ich habe nun einen eigenen Dialog angefangen.

falls es jemand mal braucht stelle ich es hier dann rein wenn ich es komplett fertig habe.

so sieht z.b. ein Aufruf aus:

C#-Code:
            FolderDialog folderDialog = new FolderDialog();

            //Filter für Dateitypenliste
            folderDialog.Filter = "Image Files(*.BMP;*.JPG)|*.BMP;*.JPG|All Files(*.*)|*.*";
            //Standarderweiterung (Wenn keine angegeben wird)
            folderDialog.DefaultExt = ".bmp";
            //Start Verzeichnis
            folderDialog.InitialDirectory = "D:\\Images";
            //Default Dateiname
            folderDialog.FileName = "testbild";
            //Titel des Dialogs
            folderDialog.Title = "Save As";

            DialogResult drResult = folderDialog.ShowDialog();
            if (drResult == DialogResult.OK)
            {
                txtInput.Text = folderDialog.FullFileNamePath;
            }

hier ein screenshot:

steffen_dec hat dieses Bild (verkleinerte Version) angehängt:
FolderDialog_screen.jpg
Volle Bildgröße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von steffen_dec am 29.05.2008 14:11.

29.05.2008 13:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
steffen_dec steffen_dec ist männlich
myCSharp.de-Mitglied

avatar-701.gif


Dabei seit: 27.03.2007
Beiträge: 322
Entwicklungsumgebung: VS2015 Ent


steffen_dec ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also hier der Dialog.

dieser beinhaltet keine Windows-Funktionen wie Kopieren, Einfügen, Löschen usw.. (Kontextmenü). Dass habe ich mit Absicht so gemacht, damit keine Daten manipuliert werden können.

und so wird der Dialog verwendet:

C#-Code:
                FolderDialog folderDialog = new FolderDialog();
                folderDialog.OverwritePrompt = false;

                //Filter für Dateitypenliste
                folderDialog.Filter = "ZIP-File (*.zip)|*.zip|SQL-File (*.sql)|*.sql";

                //Standarderweiterung (Wenn keine angegeben wird)
                folderDialog.DefaultExt = ".zip";

                //Start Verzeichnis
                if (Directory.Exists("E:\\"))
                    folderDialog.InitialDirectory = "E:\\";
                else
                    folderDialog.InitialDirectory = "D:\\";

                //Titel des Dialogs
                folderDialog.Title = "Rücksicherung der Datenbank";
                //folderDialog.DenyDrives = "C";

                DialogResult dRes = folderDialog.ShowDialog();

                if (dRes == DialogResult.OK)
                {
                     //Weiter verarbeiten
                }


Dateianhang:
unknown FolderDialog.cs (19 KB, 471 mal heruntergeladen)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von steffen_dec am 04.06.2008 08:55.

04.06.2008 08:54 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 13 Jahre.
Der letzte Beitrag ist älter als 11 Jahre.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 18.06.2019 19:23