1

Windowsフォームに一連の画像があります。画像に対応するチェックボックスがチェックされているときに、配列に画像を追加したい。ボックスをチェックするたびに、「FileNotFoundException が処理されませんでした」と表示されます。

public partial class FrmSignage : Form
{
    Image[] images = new Image[12];
    int i = 0;
    public FrmSignage()
    {
        InitializeComponent();
    }

    private void chkRadiation_CheckedChanged(object sender, EventArgs e)
    {
        images[i] = Image.FromFile("radiation.gif");   
        i++;
    }

「images[i] = Image.FromFile("radiation.gif");」という行でエラーがスローされます。ファイル名は正しいです。何が欠けている可能性がありますか?

前もって感謝します。

4

3 に答える 3

3

ファイル名は正しいです。

ファイルへの正しいパスも指定する必要があります。ファイル名は正しい可能性がありますが、現在のディレクトリは予期したものではありません。

デフォルトでは、.exe と同じフォルダー (ie:) からイメージをロードしようとしますProject\bin\Debugが、これは実行時に変更される可能性があります。パスを指定せずにイメージをロードするのは、現在のディレクトリが変更される可能性があるため安全ではありません。完全なパスを指定する必要があります。

Pathなどの System.IO のクラスは、適切なパスを構築するためのかなりの機能を提供します。

于 2012-07-10T19:39:07.490 に答える
0

パス「radiation.gif」が意味をなすようにする必要があります。これにより、実行可能ファイルが実行されているディレクトリが常にチェックインされます。

于 2012-07-10T19:39:16.017 に答える
0

問題は、実行中のコードに対してファイルが見つからないことです。ファイルが相対パスであるために環境に存在する場合でも、実行中のコードに対して相対パスである必要があります。

これを行う1つの方法は、プロジェクトアイテムとしてイメージがあると仮定して、そのイメージのビルドアクションを変更し、Content出力ディレクトリへのコピーを次のように設定Copy if Newerできることです(これらのオプションはアイテムの[プロパティ]ウィンドウにあります)。

また、画像が適切な場所にあることを確認した場合でも、ユーザーが画像を削除できないようにするには、コードにエラー処理を追加する必要があります。

于 2012-07-10T19:39:28.343 に答える