C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: パスのフォーマットがサポートされていないとは?


(過去ログ 83 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■49673 / inTopicNo.1)  パスのフォーマットがサポートされていないとは?
  
□投稿者/ カニ (8回)-(2010/05/12(Wed) 20:48:59)

分類:[.NET 全般] 

Public Class Form1
Dim a As String = "C:\Users\name\Desktop\sakura\"

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Label1.Text = "ダブルクリックで拡大"                  ↑
PictureBox1.Image = Nothing                       |
ListBox1.Items.Clear()                      ここの初期化はうまくいきます。
ListBox1.DataSource = System.IO.Directory.GetFiles(a, "*.png") ↓
End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

PictureBox1.Image = System.Drawing.Image.FromFile(a & ListBox1.Text)
    ↑この部分でエラーが出てきてしまします。パスのフォーマットがサポートされていないとは、
     どういう状態なのでしょうか。パスは正確に入力しているつもりです。

PictureBox1.SizeMode = PictureBoxSizeMode.Zoom ここも大丈夫です。
End Sub

Private Sub PictureBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.DoubleClick
System.Diagnostics.Process.Start(ListBox1.Text) ここも特に問題なく。
End Sub
End Class

 まとめると、ファイルのパスのフォーマットがうまくいかないみたいなのですが、
あいにくそれを解決する方法がわかりません。ファイルのパスは正確で、アクセス拒否も発生していません。
 pictureboxの中にファイルから読みだした画像を表示するには、これではだめなのでしょうか。
 また、これでいいのなら何が間違っているのでしょうか。
引用返信 編集キー/
■49674 / inTopicNo.2)  Re[1]: パスのフォーマットがサポートされていないとは?
□投稿者/ Hongliang (625回)-(2010/05/12(Wed) 21:18:12)
> Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
>
> PictureBox1.Image = System.Drawing.Image.FromFile(a & ListBox1.Text)
>  ↑この部分でエラーが出てきてしまします。パスのフォーマットがサポートされていないとは、
>      どういう状態なのでしょうか。パスは正確に入力しているつもりです。
「つもり」じゃなくて、ちゃんと確認して下さい。
いきなり FromFile に突っ込むのではなく、一旦変数に a & ListBox1.Text の結果を取り出して、デバッガで確認しましょう。
// ListBox1.Text がフルパスで、a と結合した結果が c:\document ...\sakura\c:\document ... とかになってません?
引用返信 編集キー/
■49677 / inTopicNo.3)  Re[2]: パスのフォーマットがサポートされていないとは?
□投稿者/ .SHO (1332回)-(2010/05/12(Wed) 22:01:59)
> // ListBox1.Text がフルパスで、a と結合した結果が c:\document ...\sakura\c:\document ... とかになってません?

もしくはListBox1.Textが空とか。。。
どっちにしてもデッバグすれば済む話ですね、たぶん。

引用返信 編集キー/
■49680 / inTopicNo.4)  Re[2]: パスのフォーマットがサポートされていないとは?
□投稿者/ よねKEN (498回)-(2010/05/13(Thu) 09:36:19)
2010/05/13(Thu) 09:48:54 編集(投稿者)

問題点はHongliangさんの指摘通りだと思いますので、私からはデバッグの仕方の例を挙げておきます。

> PictureBox1.Image = System.Drawing.Image.FromFile(a & ListBox1.Text)
>  ↑この部分でエラーが出てきてしまします。パスのフォーマットがサポートされていないとは、
>      どういう状態なのでしょうか。パスは正確に入力しているつもりです。

【方法1】
実行するとソースコードのこの箇所が反転して一時停止状態になると思いますので、
そのときに、「イミディエイト」ウインドウで

? a & ListBox1.Text

と打ち込むとそのときのこの式の値を確認できます。

【方法2】
上記の「PictureBox1.Image =〜」の行の前に

Debug.WriteLine("パス=""" & a & ListBox1.Text & """")

のようなコードを追加します。
このようにしておいて、プログラムを実行するとエラーが出たときに、
「出力ウインドウ」(VSの環境設定によっては「イミディエイトウインドウ」かも)には
「パス="〜"」のように「a & ListBox1.Text 」
の値が出力されているので、これで内容を確認できます。


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -