12 Stimmen

Wie kann ich einen OpenFileDialog im Eigenschaftsraster eines benutzerdefinierten Steuerelements erhalten?

Ich erstelle ein benutzerdefiniertes .net-Steuerelement und es sollte in der Lage sein, mehrere Textdateien zu laden. Ich habe eine öffentliche Eigenschaft namens ListFiles mit diesen Eigenschaften gesetzt:

[Browsable(true), Category("Configuration"), Description("List of Files to Load")]
public string ListFiles
  {
     get { return m_oList; }
     set { m_oList = value; }
  }

Je nach Art des Objekts (string, string[], Liste, ...), die Eigenschaft Gitter wird der Benutzer einige Daten eingeben können. Mein Ziel wäre es, einen gefilterten openfiledialog im Properties Grid meiner Komponente zu haben, der es dem Benutzer ermöglicht, mehrere Dateien auszuwählen und sie als Array oder String (oder etwas anderes...) zurückzugeben.

Sooo... Hier ist meine Frage: Wie kann ich einen OpenFileDialog im Eigenschaftsraster eines benutzerdefinierten Steuerelements erhalten?

Herzlichen Dank!

17voto

SerGiant Punkte 161

Sie können den integrierten UITypeEditor verwenden. Er heißt FileNameEditor

[EditorAttribute(typeof(System.Windows.Forms.Design.FileNameEditor), typeof(System.Drawing.Design.UITypeEditor))]

public string SomeFilePath
{
 get;
 set;
}

7 Stimmen

Sie müssen eine System.Design.dll-Referenz hinzufügen. Die System.Design.dll ist nur verfügbar, wenn Sie .net framework 4.0 (full) und nicht 4.0 client profile verwenden.

11voto

Cory Punkte 1253

Sie können dies tun, indem Sie eine UITypeEditor .

Hier ein Beispiel eines UITypeEditors, der Ihnen den OpenFileDialog zur Auswahl eines Dateinamens bietet.

2voto

Hier ist ein weiteres Beispiel für die Anpassung des Dateidialogs:

CustomFileEditor.cs

using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace YourNameSpace
{
    class CustomFileBrowser : FileNameEditor
    {
        protected override void InitializeDialog(OpenFileDialog openFileDialog)
        {
            base.InitializeDialog(openFileDialog);
            openFileDialog.Title = "Select Project File : ";
            openFileDialog.Filter = "Project File (*.proj)|*.proj"; ;
        }
    }

}

Verwendung:

            [Category("Settings"), DisplayName("Project File:")]
            [EditorAttribute(typeof(CustomFileBrowser), typeof(System.Drawing.Design.UITypeEditor))]
            public string Project_File { get; set; }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X