簡體   English   中英

C#OpenFileDialog:文件名,目錄名稱或卷標簽語法不正確

[英]C# OpenFileDialog: The filename, directory name, or volume label syntax is incorrect

我需要以編程方式從Visio中的Sharepoint打開文檔。 但是,當我導航到網絡文件夾時,選擇一個文檔並單擊“打開”,會出現以下錯誤:

文件名,目錄名稱或卷標簽語法不正確 在此處輸入圖片說明

在搜索錯誤時,我找到了以下文檔: https : //msdn.microsoft.com/zh-cn/library/ms832054.aspx 因此,我猜該文件名包含非法字符。 我試圖使用FileOk事件來覆蓋fileName的驗證:

public void openFile() {
    OpenFileDialog sf = new OpenFileDialog();
    sf.FileOk += openFileDialog_FileOk;
    if (sf.ShowDialog() == DialogResult.OK)
    {
        var app =(Microsoft.Office.Interop.Visio.Application)context.Application;
        app.Documents.Open(sf.FileName);
    }
}

private void openFileDialog_FileOk(object sender, CancelEventArgs e)
{
    var sfd = sender as OpenFileDialog;
    var file = new FileInfo(sfd.FileName);
    if (file.Name.Contains('#'))
        e.Cancel = true;
}

但該事件不會觸發。 使用標准的Visio界面可以從Sharepoint打開文件,但是文件對話框看起來有些不同: 在此處輸入圖片說明

如何獲得類似的文件對話框? 所以我的問題是:如何以編程方式從Sharepoint(網絡文件夾)打開Visio文檔?

由於Visio不提供app.GetOpenFilename API,因此您很不走運。 但是您可以使用其他Office應用程序來實現。 以Excel為例,例如:

var excel = new Excel.Application();
var fileName = excel.GetOpenFilename();
excel.Quit();

var visio = new Visio.Application();
visio.Documents.Open(fileName);

它提供了一個“類似對話框”和“常規URL”,Visio API可以理解該對話框,而沒有任何問題。

問題可能是Visio API無法使用@SSL部分來理解UNC DAV文件路徑格式,該格式由默認的“內置” OpenFileDialog提供(或者也可以是其他名稱)。 檢查默認對話框返回的.FileName的值是什么。 順便說一句,為防止出現錯誤消息,只需將sf.CheckFileExists = false設置為足夠,也許就足夠了。

暫無
暫無

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

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