3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(.Net)素の.Net Framework 2.0 で OpenFileDialog.SafeFileNameプロパティは使えない

System.Windows.Forms.OpenFileDialog クラスに SafeFileName というプロパティがあります。

このプロパティどうやら素の .Net Framework 2.0 では実装されていないみたいです。

このプロパティをSP無しの .Net 2.0 で使うと下記のような実行時エラーが発生します。

メソッドが見つかりません: 'System.String System.Windows.Forms.OpenFileDialog.get_SafeFileName()'

ここ見ると、.Net 2.0 の SP1 をあてると問題なく使えるようですね。

確かに2.0用のMSDN:OpenFileDialog メンバを見ると、SafeFileName プロパティは存在しません。

自身の開発PCには.Net 3.5 が入ってますが、Visual Studio 自体のプロジェクトは 2.0 で作っていたので問題に全然気づきませんでした。

ちゃんとMSDNのリファレンスに情報のっけるか、もし使わせたくないのならインテリセンスから消すなり、何らかの対策をMSにとってほしいものですね。

ちなみに、この SafeFileName プロパティはファイルダイアログで選んだファイルのパスなしファイル名だけを取得するプロパティなので、.Net2.0でも動くようにこうしました

Dim ofd As New OpenFileDialog()

...省略(ダイアログオープン処理)

Dim strFileName As String = ofd.SafeFileName

 

 修正後 ↓

 

Dim ofd As New OpenFileDialog()

...省略(ダイアログオープン処理)

Dim strFileName As String = IO.Path.GetFileName(ofd.FileName)