簡體   English   中英

C# 中從未調用過 openFileDialog_FileOK

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM