[英]openFileDialog_FileOK is never called in C#
我想在 C# 中使用openFileDialog_FileOk
成功關閉FileDialog
時在label1
上打印所選文件的名稱,但從未調用過openFileDialog_FileOK
。 抱歉英語不好。
namespace Graph_Win_Forms
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
{
label1.Text = "Dosya: " + openFileDialog1.FileName;
}
}
}
我嘗試刪除代碼和 WinForms 元素,但沒有用
我懷疑您已經從某處的在線示例中復制了該代碼,並且您忽略了一個事實,即如果您希望在引發事件時調用該方法,則需要將其注冊為事件處理程序。 最直接的選擇是:
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.FileOk += openFileDialog1_FileOk;
openFileDialog1.ShowDialog();
首先可能做的是將OpenFileDialog
添加到設計器中的窗體,然后在設計器中生成事件處理程序。 您也可以這樣做,而不是在代碼中創建OpenFileDialog
。 如果這樣做,您可以 select 設計器中的現有方法,而不是創建新方法。
話雖如此,我通常不會處理那個事件。 如果您在不同的地方顯示一個或多個對話,並且您想編寫代碼以在一個地方執行 OK,那么處理該事件是有意義的。 如果事件處理程序與顯示對話的代碼位於不同的代碼文件中,這也是有意義的。 如果您只在一個地方顯示對話,我可能只是檢查ShowDialog
的結果並按OK
操作。
使用下面代碼的簡單方法。
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openfiledialog1 = new OpenFileDialog();
if (openfiledialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
label1.Text = "Dosya: " + openfiledialog1.FileName;
}
}
如果您使用的是工具箱,則必須在屬性->事件->FileOk 中聲明事件“openFileDialog1_FileOK”,並刪除 OpenFileDialog 實例的初始化,因為設計模式會自動完成。
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
}
private void openFileDialog1_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
{
label1.Text = "Dosya: " + openFileDialog1.FileName;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.