2016-09-13 16 views
-1

私はwinフォームでWebブラウザコントロールを持っており、navigateメソッドを使用してローカルpdfファイルを開きたいとします。リテラル文字列として私のハードコードURL文字列の場合、それだけで正常に動作新しいウリとしてナビゲートすることを渡す:Webブラウザコントロールが文字列変数として機能しないC#ファイルパス

WebBrowser wb = new WebBrowser(); 
... 
string url = @"file:///C:\folder\01 - folder\my pdf file.pdf" 
wb.Navigate(new Uri(url)); 
wb.Show(); 

あなたが見ることができるように、私のパスにスペースが含まれていると私はロードしようとすると、それはそう変数と同じ文字列(文字列リテラルではない)。ウェブブラウザは何をすべきかを知らない。私は文字列リテラルとして書くことができないので、上記と同じに見えるように異なるメソッドを使用して私の文字列を整形しましたが、それは動作しません。私は他の選択肢はすべてのバックスラッシュをエスケープすることだと思うが、スペースに問題があると思う。誰も文字列変数を渡すことによってこの作業を行う方法の具体的な例を挙げることができます。

+1

コードは提供していますか?はいの場合、どのコードが機能しませんか?それも提供してください。 – SergeyS

+0

「変数」として使用すると、 'url'はどのように見えますか? – rbr94

+0

実際、私は今試してみましたが、それは "働いている"ようです - ファイルのダウンロードダイアログが表示されます。あなたの問題はどうなっていますか? –

答えて

1

私は実際にそれを理解することができましたが、それはなぜ機能するのか完全に理解していません。私は、urlの最初の文字列をリテラルにすることによって、文字列全体をそのように扱うことを強制していると思います(そしてリテラルはUriメソッドでうまく動作します)。とにかく、これは同じことにこだわっている可能性のある人を助けてくれます。

WebBrowser wb = new WebBrowser(); 

string path = yourPath; // I have something like "C:\Folder 1\Folder 2" 
string fileName = yourFileName; // "something.pdf" 

string url = @"file:///" + path + fileName; 

wb.Navigate(new Uri(url)); 
wb.Show(); 

注:私はパスを解析し、民間の方法にopenFileDialog結果のファイル名を渡すことによって、パスを持って、ファイル名に同じでした。

関連する問題