none
ファイルを開く時の ダイアログボックスの関数って無いですか? RRS feed

  • 質問

  • ファイルを選ぶ時の表示選択モジュールを作ろうと思ってますが

    標準でそのまま使える関数って無いですか?

    自分で作ろうとしてますが

    ディレクトリとファイルが同時表示されて

    ディレクトリをクリックするとその中が見えると言う

    部分が作れる自信が無いです。

    上部ディレクトリへの移動も必要ですよね。

    以下は試作品です。

    Imports System
    Imports System.IO
    Imports System.IO.IsolatedStorage
    Imports System.Collections

    Public Function ファイルの選択()

            Dim 文字

            Try

             
                Dim dirs As String() = Directory.GetFiles("C:", "*")
                Console.WriteLine("The number of files starting with c is {0}.", dirs.Length)


                Dim dir As String

                文字 = ""

                For Each dir In dirs
                    Console.WriteLine(dir)
                    文字 = 文字 & dir & Chr(13)
                Next

                LIST.Text = 文字

            Catch e As Exception

                Console.WriteLine("The process failed: {0}", e.ToString())
            

            End Try

        End Function

    2006年7月10日 22:11

すべての返信

  • デザートイーグルさん、こんにちは。

     デザートイーグル さんからの引用
    ファイルを選ぶ時の表示選択モジュールを作ろうと思ってますが標準でそのまま使える関数って無いですか?

    OpenFileDialog あたりではダメでしょうか?

    「ファイルを開く」ダイアログを表示する

    「モジュール」「関数」 という言葉のイメージとはちょっと違いますが...

    2006年7月11日 0:16
  • OpenFileDialogクラスがそのまま使えると思います。


                OpenFileDialog fd = new OpenFileDialog();
                fd.ShowDialog();

    2006年7月11日 0:17
  • この例のコードは、フォームに Button コントロールと OpenFileDialog コンポーネントがあることを想定して書かれています。

    ' Visual Basic
    Private Sub Button1_Click(ByVal sender As System.Object,  ByVal e As System.EventArgs) Handles Button1.Click
      
       If OpenFileDialog1.ShowDialog() = DialogResult.OK Then

         Dim sr As New System.IO.StreamReader(OpenFileDialog1.FileName)

         MessageBox.Show(sr.ReadToEnd)

         sr.Close()

       End If


    End Sub

    ヘルプに上記のように書いてたのでコマンドボタンの中に貼り付けてみました。

       OpenFileDialog1 と MessageBox  で エラーが出ます。

       OpenFileDialog1 と MessageBox  って
       どこから(データ,Webフォーム,コンポーネント,html)

       どうゆう風に実装?するんですか?

     

    2006年7月11日 14:30
  •  Imports System.IO

    Private Sub ボタン_Click(パラメタ)

            Dim OpenFileDialog
            Dim fd

            OpenFileDialog.fd = New OpenFileDialog
                                    (型 'OpenFileDialog' が定義されてません てエラーが出ました)

            fd.ShowDialog()

    end sub

            上記のように書いてみました。

            OpenFileDialog  って コントロールなんですか?

        私のツールには無いような・・・・
     

     

            

         


     

    2006年7月11日 21:39
  • とりあえずそのものズバリの名称が出ているので、MSDNライブラリ調べませんか?
    2006年7月11日 23:08
  •  デザートイーグル さんからの引用
     Imports System.IO

    Private Sub ボタン_Click(パラメタ)

            Dim OpenFileDialog
            Dim fd

            OpenFileDialog.fd = New OpenFileDialog
                                    (型 'OpenFileDialog' が定義されてません てエラーが出ました)

            fd.ShowDialog()

    end sub

            上記のように書いてみました。

            OpenFileDialog  って コントロールなんですか?

        私のツールには無いような・・・・

    名前空間付きで書けば、System.Windows.Forms.OpenFileDialog クラスです。

    それにしても、提示されたコードはおかしいと思います。
    型が明示的に書かれていません。(As 以降がない...)

    2006年7月12日 0:59
  • とりあえずそのものズバリの名称が出ているので、MSDNライブラリ調べませんか?

    MSDN2  と MSDN3  の CD  で 調べてみたのですが・・・・

     

     

    2006年7月12日 21:20
  • >名前空間付きで書けば、System.Windows.Forms.OpenFileDialog クラスです。

      上記の名前空間は宣言しましたが・・・   

    >それにしても、提示されたコードはおかしいと思います。
    >型が明示的に書かれていません。(As 以降がない...)

        VB4 のVB

          アクセスやエクセルの VBA

           今までの経験からいくと明示的に宣言しない方が

       エラーが少ない気がするのですが・・・

       VB.NET の 場合は 逆ですか???

       そもそも、

      >    Dim OpenFileDialog
          >   Dim fd

       この 宣言方法でいいんでしょうか?

       いいとしたら 何型で 宣言すべきなのでしょうか?

       それとも

       OpenFileDialog と言う

       コントロールを貼り付けるべきなのか?

       

     

      

     


    2006年7月12日 21:29
  • デザートイーグルさん、こんにちは。

     デザートイーグル さんからの引用
    上記の名前空間は宣言しましたが・・・

    宣言というのは微妙ですね。
    実際に提示されたコードには、System.Windows.Forms.OpenFileDialog とは書かれていないのですから...

    VB4 のVB、アクセスやエクセルの VBA
    今までの経験からいくと明示的に宣言しない方がエラーが少ない気がするのですが・・・
    VB.NET の 場合は 逆ですか???

    型付プログラミングについて大きく誤解なさっているようです。
    型を明示的にした方がエラーが多くなるのは、実装者が全く型を意識していないからです。

    VB に暗黙の型変換を任せるということは、ある種、プログラマ自ら自分で型を管理するのを放棄したということになります。
    (管理するのをというよりは、考えるのを放棄したと書いた方が正しいかもしれませんが)

    VB.NET の場合とか関係なく、型は明示的にしておかないと意図しない結果になることもあります。
    私は普通の方であれば、コンパイル エラーはともかく、バグは増える傾向にあると断言します。
    (コンパイル エラーは、コンパイラにチェックさせれば良いのですから、当たり前ですが後者の方が厄介です)


    > Dim OpenFileDialog
    > Dim fd

    この 宣言方法でいいんでしょうか?
    いいとしたら 何型で 宣言すべきなのでしょうか?

    1 行目の文章から踏まえて、2 行目の書き出しが 「いいとしたら」 はおかしいですね。
    2 行目の書き出しは 「ダメだとしたら」 が日本語的に適切だと思います。

    閑話休題。

    型を明示化するには、もうすでに出ているように、System.Windows.Forms.OpenFileDialog であるとを示さなければなりません。


    Dim ofd As System.Windows.Forms.OpenFileDialog
     

    です。

    インスタンス化については、お分かりになると思うので割愛します。(疲れた...)

    2006年7月12日 21:56
  • Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

            Dim openFile As New System.Windows.Forms.OpenFileDialog

            openFile.DefaultExt = "doc"

            openFile.Filter = "Word documents (*.doc)|*.doc"

            openFile.ShowDialog()
         (↑この部分で下記のエラーが出ました)

            If openFile.FileNames.Length > 0 Then

                Dim filename As String

                For Each filename In openFile.FileNames

                    ' Insert code here to process the files.


                Next

            End If

    End Sub

    アプリケーションが UserInteractive モードで実行されていないときに、
    モーダル ダイアログまたはフォームを表示することはできません。
    サービス アプリケーションからの通知を表示するには、
    ServiceNotification または DefaultDesktopOnly スタイルを指定してください。

        どう対応すればいいか?分かりますか?

    2006年7月13日 14:04
  •  デザートイーグル さんからの引用
    どう対応すればいいか?分かりますか?

    現象を再現するには情報が足らないので分かりません。
    とりあえず、
    1.Visual BasicプロジェクトでWindowsアプリケーションを選択
    2.フォームにボタン追加
    3.イベントハンドラに上記記述をコピペ
    4.デバッグモードで開始
    の手順で試しましたが、エラーは起こりませんよ?
    おそらく、これが一般的かつ簡単な使用例だと思いますが・・・。

     

    【蛇足】
    ちなみに、複数選択を許可するには

    openFile.ShowDialog()
    の前に、
    openFile.Multiselect = True
    を追加しないと、
    For Each filename In openFile.FileNames
      ' Insert code here to process the files.
    Next

    の意味が無いのでは?

     【参考】
    私はVB6でアプリケーション開発経験はあるものの.NETは今回が初です。

     

    2006年7月13日 22:40
  • WindowsアプリケーションでOpenFileDialogを出そうとしているんですよね?

    アプリケーションが UserInteractive モードで実行されていないときに、
    モーダル ダイアログまたはフォームを表示することはできません。
    サービス アプリケーションからの通知を表示するには、
    ServiceNotification または DefaultDesktopOnly スタイルを指定してください。

    Webアプリケーションの右も左もわかんない時に、Webアプリケーションの中でMsgBox関数を使ってしまってこのエラーを出した記憶があるものですから・・・。

    2006年7月14日 0:38
  • >WindowsアプリケーションでOpenFileDialogを出そうとしているんですよね?

    ASP.NET Webアプリケーション か
    ASP.NET Webサービスの どちらか
    だと思います。

    私が作ったソフトは
    ユーザからみると
    ブラウザだけで動いてますよ。

     

     

    2006年7月14日 19:47
  • Web アプリケーションであれば、System.Windows.Forms 名前空間は利用できません。

    クライアント サイド、サーバーサイドの区別をしっかりとイメージしましょう。
    今回のようにハマってしまいますから。

    # 最初に環境聞いておくべきでしたね...

    2006年7月15日 6:10
  • >Web アプリケーションであれば、System.Windows.Forms 名前空間は利用できません。

      と言う事は

     ASP.NET Webアプリケーション か
     ASP.NET Webサービスの どちらか

      だと
     OpenFileDialog
      が使えないって事ですか?


    >クライアント サイド、サーバーサイドの区別をしっかりとイメージしましょう。
    >今回のようにハマってしまいますから。

      Webのクライアントサイドで OpenFileDialog
     を使えますか?

    質問が一つ

      じゃんぬねっと が 使ってる手法
      相手のコメントを囲んで背景をグレーにする方法
      書き方を教えてくれませんか?


     

     

    2006年7月15日 13:52
  • デザートイーグル さん、こんにちは、。

     デザートイーグル さんからの引用
    ASP.NET Webアプリケーション か
    ASP.NET Webサービスの どちらかだと OpenFileDialog が使えないって事ですか?

    はい、そうですね。

    Webのクライアントサイドで OpenFileDialog を使えますか?

    同じことですが、使えません。
    あるとすれば、HTML の <input type="file" ...> でしょうけど。

    じゃんぬねっと が 使ってる手法相手のコメントを囲んで背景をグレーにする方法書き方を教えてくれませんか?

    返信する際、隣の [引用] ボタンを使って返信しようとすればわかると思います。
    [ quote ] ~ [ /quote ] で、括ってある部分が、引用にあたります。

    この、[ xxx ] ~ [ /xxx ] は、BB コードというタグです。
    BB コードについては、以下のスレッドが参考になるかと思います。

    特殊タグの一覧について

    HTML についてご存知であれば、「HTML ビュー」 に切り替えて、HTML を書いても良いでしょう。

    # おっと、久々に呼び捨てされたぞ。(;^-^)

    2006年7月16日 0:43