簡體   English   中英

將OpenFileDialog定義為靜態類是個好主意嗎?

[英]Is it good idea to define OpenFileDialog as a static class?

我有帶有OpenFileDialog應用程序,並且我不想每次用戶想要添加文件時都使用OpenFileDialog新實例(使用Winforms可以在設計器中完成)。 因此,將OpenFileDialog定義為Static class還是Singleton是個好主意。

編輯

public static class OpenFileDialogCreation
{
    public static OpenFileDialog openFileDialog;

    public static void CreateDialog()
    {
        openFileDialog = new OpenFileDialog();
        openFileDialog.Title = "Select File(s)";
        openFileDialog.Filter = "*.doc|*.doc";         
        openFileDialog.Multiselect = true;
    } 
}

OpenFileDialog是一個小類。 圍繞非托管Windows api的微型.NET包裝器類。 只有在調用ShowDialog()時才會發生繁重的事情,而在關閉對話框時便會消失。 它的Winforms版本是可使用的(不是WPF版本),但這僅是因為它從Component繼承了Dispose()。 它什么也沒做。

唯一值得注意的內存使用情況是string [],用於存儲所選文件,即FileNames屬性的后備存儲。 通常只有一個,而您只能使用FileName,從技術上講,它可以是數千個。 超過兆字節的情況非常罕見。

因此,靜態不是一個嚴重的問題。 還是可取的。 不要忽略使用工廠方法的選項:

public static OpenFileDialog CreateDialog(string initialDir = null) {
    var dlg = new OpenFileDialog();
    dlg.Title = "Select Word documents";
    dlg.Filter = "Word documents (*.doc,*.docx)|*.doc;*.docx";
    dlg.DefaultExt = ".doc";
    dlg.Multiselect = true;
    if (initialDir != null) dlg.InitialDirectory = initialDir;
    return dlg;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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