Nasıl yapılır: OpenFileDialog ile dosyaları açma
System.Windows.Forms.OpenFileDialogbileşen, dosyalara göz atmak ve dosyaları seçmek için Windows iletişim kutusunu açar. Seçili dosyaları açmak ve okumak için OpenFileDialog.OpenFile yöntemini kullanabilir veya sınıfının bir örneğini oluşturabilirsiniz System.IO.StreamReader . Aşağıdaki örneklerde her iki yaklaşım gösterilmektedir.
.NET Framework, özelliği almak veya ayarlamak için FileName sınıfı tarafından verilen ayrıcalık düzeyi gereklidir System.Security.Permissions.FileIOPermission . Örnekler bir FileIOPermission izin denetimi çalıştırır ve kısmi güven bağlamında çalıştırıldıysanız ayrıcalıkların yetersiz olması nedeniyle bir özel durum oluşturabilir. Daha fazla bilgi için bkz. kod erişimi güvenlik temelleri.
bu örnekleri C# veya Visual Basic komut satırından .NET Framework uygulamalar olarak oluşturabilir ve çalıştırabilirsiniz. Daha fazla bilgi için, komut satırından csc.exeveya derlemeile komut satırı oluşturma bölümüne bakın.
.net core 3,0 ile başlayarak, örnekleri .net core Windows Forms klasör adı > . csproj proje dosyası olan bir klasörden .net core uygulamaları Windows olarak oluşturup çalıştırabilirsiniz.
Örnek: StreamReader ile bir dosyayı akış olarak okuma
aşağıdaki örnek, ButtonClick yöntemi ile açmak için Windows Forms denetimin olay işleyicisini kullanır OpenFileDialogShowDialog . Kullanıcı bir dosya seçtikten ve Tamamseçeneğini belirledikten sonra, sınıfın bir örneği dosyayı okur ve formun metin kutusunda içeriğini görüntüler. Dosya akışlarından okuma hakkında daha fazla bilgi için bkz FileStream.BeginRead . ve 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}");
}
}
}
}
Imports System.Drawing
Imports System.IO
Imports System.Security
Imports System.Windows.Forms
Public Class OpenFileDialogForm : Inherits Form
Public Shared Sub Main()
Application.SetCompatibleTextRenderingDefault(False)
Application.EnableVisualStyles()
Dim frm As New OpenFileDialogForm()
Application.Run(frm)
End Sub
Dim WithEvents SelectButton As Button
Dim openFileDialog1 As OpenFileDialog
Dim TextBox1 As TextBox
Private Sub New()
ClientSize = New Size(400, 400)
openFileDialog1 = New OpenFileDialog()
SelectButton = New Button()
With SelectButton
.Text = "Select file"
.Location = New Point(15, 15)
.Size = New Size(100, 25)
End With
TextBox1 = New TextBox()
With TextBox1
.Size = New Size(300, 300)
.Location = New Point(15, 50)
.Multiline = True
.ScrollBars = ScrollBars.Vertical
End With
Controls.Add(SelectButton)
Controls.Add(TextBox1)
End Sub
Private Sub SetText(text)
TextBox1.Text = text
End Sub
Public Sub SelectButton_Click(sender As Object, e As EventArgs) _
Handles SelectButton.Click
If openFileDialog1.ShowDialog() = DialogResult.OK Then
Try
Dim sr As New StreamReader(openFileDialog1.FileName)
SetText(sr.ReadToEnd())
Catch SecEx As SecurityException
MessageBox.Show($"Security error:{vbCrLf}{vbCrLf}{SecEx.Message}{vbCrLf}{vbCrLf}" &
$"Details:{vbCrLf}{vbCrLf}{SecEx.StackTrace}")
End Try
End If
End Sub
End Class
Örnek: bir filtrelenmiş seçimden bir dosyayı OpenFile ile açma
Aşağıdaki örnek ButtonClick , OpenFileDialog yalnızca metin dosyalarını gösteren bir filtre ile açmak için denetimin olay işleyicisini kullanır. kullanıcı bir metin dosyası seçip tamam' ı seçtikten sonra, Not Defteri dosyayı açmak için yöntemi kullanılır.
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}");
}
}
}
}
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.IO
Imports System.Security
Imports System.Windows.Forms
Public Class OpenFileDialogForm : Inherits Form
Dim WithEvents selectButton As Button
Dim openFileDialog1 As OpenFileDialog
Public Shared Sub Main()
Application.SetCompatibleTextRenderingDefault(false)
Application.EnableVisualStyles()
Dim frm As New OpenFileDialogForm()
Application.Run(frm)
End Sub
Private Sub New()
openFileDialog1 = New OpenFileDialog() With
{
.FileName = "Select a text file",
.Filter = "Text files (*.txt)|*.txt",
.Title = "Open text file"
}
selectButton = New Button() With {.Text = "Select file"}
Controls.Add(selectButton)
End Sub
Public Sub selectButton_Click(sender As Object, e As EventArgs) _
Handles selectButton.Click
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
Try
Dim filePath = OpenFileDialog1.FileName
Using str = openFileDialog1.OpenFile()
Process.Start("notepad.exe", filePath)
End Using
Catch SecEx As SecurityException
MessageBox.Show($"Security error:{vbCrLf}{vbCrLf}{SecEx.Message}{vbCrLf}{vbCrLf}" &
$"Details:{vbCrLf}{vbCrLf}{SecEx.StackTrace}")
End Try
End If
End Sub
End Class