Leggere in inglese

Condividi tramite


Procedura: Aprire file con OpenFileDialog

Il System.Windows.Forms.OpenFileDialog componente apre la finestra di dialogo Di Windows per l'esplorazione e la selezione di file. Per aprire e leggere i file selezionati, è possibile usare il OpenFileDialog.OpenFile metodo o creare un'istanza della System.IO.StreamReader classe . Negli esempi seguenti vengono illustrati entrambi gli approcci.

Per ottenere o impostare la FileName proprietà in .NET Framework, è necessario un livello di privilegio concesso dalla System.Security.Permissions.FileIOPermission classe . Gli esempi eseguono un FileIOPermission controllo delle autorizzazioni e possono generare un'eccezione a causa di privilegi insufficienti se vengono eseguiti in un contesto parzialmente attendibile. Per altre informazioni, vedere Nozioni di base sulla sicurezza dell'accesso al codice.

È possibile compilare ed eseguire questi esempi come app .NET Framework dalla riga di comando di C# o Visual Basic. Per altre informazioni, vedere Compilazione da riga di comando con csc.exe o Build dalla riga di comando.

A partire da .NET Core 3.0, è anche possibile compilare ed eseguire gli esempi come app di Windows .NET Core da una cartella con un file di progetto .NET Core Windows Form <nome> cartella.csproj.

Esempio: Leggere un file come flusso con StreamReader

Nell'esempio seguente viene utilizzato il gestore eventi del controllo Windows Form Button per aprire con OpenFileDialog il ShowDialog metodo .Click Dopo che l'utente sceglie un file e seleziona OK, un'istanza della StreamReader classe legge il file e ne visualizza il contenuto nella casella di testo del modulo. Per altre informazioni sulla lettura da flussi di file, vedere FileStream.BeginRead e FileStream.Read.

using System;
using System.Drawing;
using System.IO;
using System.Security;
using System.Windows.Forms;

public class OpenFileDialogForm : Form
{
    [STAThread]
    public static void Main()
    {
        Application.SetCompatibleTextRenderingDefault(false);
        Application.EnableVisualStyles();
        Application.Run(new OpenFileDialogForm());
    }

    private Button selectButton;
    private OpenFileDialog openFileDialog1;
    private TextBox textBox1;

    public OpenFileDialogForm()
    {
        openFileDialog1 = new OpenFileDialog();
        selectButton = new Button
        {
            Size = new Size(100, 20),
            Location = new Point(15, 15),
            Text = "Select file"
        };
        selectButton.Click += new EventHandler(SelectButton_Click);
        textBox1 = new TextBox
        {
            Size = new Size(300, 300),
            Location = new Point(15, 40),
            Multiline = true,
            ScrollBars = ScrollBars.Vertical
        };
        ClientSize = new Size(330, 360);
        Controls.Add(selectButton);
        Controls.Add(textBox1);
    }
    private void SetText(string text)
    {
        textBox1.Text = text;
    }
    private void SelectButton_Click(object sender, EventArgs e)
    {
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                var sr = new StreamReader(openFileDialog1.FileName);
                SetText(sr.ReadToEnd());
            }
            catch (SecurityException ex)
            {
                MessageBox.Show($"Security error.\n\nError message: {ex.Message}\n\n" +
                $"Details:\n\n{ex.StackTrace}");
            }
        }
    }
}

Esempio: Aprire un file da una selezione filtrata con OpenFile

Nell'esempio seguente viene utilizzato il Button gestore eventi del Click controllo per aprire OpenFileDialog con un filtro che mostra solo i file di testo. Dopo che l'utente sceglie un file di testo e seleziona OK, il OpenFile metodo viene usato per aprire il file in Blocco note.

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Security;
using System.Windows.Forms;

public class OpenFileDialogForm : Form
{
    [STAThread]
    public static void Main()
    {
        Application.SetCompatibleTextRenderingDefault(false);
        Application.EnableVisualStyles();
        Application.Run(new OpenFileDialogForm());
    }

    private Button selectButton;
    private OpenFileDialog openFileDialog1;

    public OpenFileDialogForm()
    {
        openFileDialog1 = new OpenFileDialog()
        {
            FileName = "Select a text file",
            Filter = "Text files (*.txt)|*.txt",
            Title = "Open text file"
        };

        selectButton = new Button()
        {
            Size = new Size(100, 20),
            Location = new Point(15, 15),
            Text = "Select file"
        };
        selectButton.Click += new EventHandler(selectButton_Click);
        Controls.Add(selectButton);
    }

    private void selectButton_Click(object sender, EventArgs e)
    {
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                var filePath = openFileDialog1.FileName;
                using (Stream str = openFileDialog1.OpenFile())
                {
                    Process.Start("notepad.exe", filePath);
                }
            }
            catch (SecurityException ex)
            {
                MessageBox.Show($"Security error.\n\nError message: {ex.Message}\n\n" +
                $"Details:\n\n{ex.StackTrace}");
            }
        }
    }
}

Vedi anche