-2

私のアプリケーションは、TextBoxで提供されたファイル名でJPEG画像ファイルを保存する必要があります。ユーザーにダイアログを表示したり、保存した画像の場所を変更したりしたくないので、SaveFileDialogを使用したくありません。

保存したファイルの名前をTextBoxから設定するにはどうすればよいですか?

private void button1_Click(object sender, EventArgs e)
{
    if (textBox4.Text.Length >= 1)
       bitmap.Save(@"C:\Test.jpg");
}
4

3 に答える 3

4

どうですか:

if(filename.IndexOfAny(Path.GetInvalidFileNameChars()) != -1)
   bitmap.Save(textBox4.Text);
else
   MessageBox.Show("Error: the file name contains invalid chars");

編集:

それはうまくいきません。ファイルをC:に保存する必要があり、ファイルは私のコードと同じようにjpg画像である必要があるためです。SaveFileDialogを使用してこれを解決する方法は知っていますが、ファイルを保存するダイアログを表示したくないので、ユーザーはファイルを保存する場所を変更しないでください。

if(filename.IndexOfAny(Path.GetInvalidFileNameChars()) != -1)
   bitmap.Save(@"C:\" + textBox4.Text + ".jpg");
else
   MessageBox.Show("Error: the file name contains invalid chars");
于 2012-08-05T18:57:54.727 に答える
1

ユーザーが入力したテキストを使用する場合は、文字列から不正な文字を削除する必要があります。そうしないと、その名前でファイルを作成しようとしたときに例外が発生します。

private static string RemoveInvalidChars(string s, char[] invalidChars) {
    foreach (char ch in invalidChars) {
        s = s.Replace(ch.ToString(), "");
    }
    return s.Trim();
}

このヘルパーメソッドを使用すると、次のようにビットマップを保存できます

string path = RemoveInvalidChars(Path.GetDirectoryName(textBox4.Text),
                                 Path.GetInvalidPathChars());
string filename = RemoveInvalidChars(Path.GetFileName(textBox4.Text),
                                     Path.GetInvalidFileNameChars());
if (filename.Length > 0) {
    if (path.Length > 0) {
        filename = Path.Combine(path, filename);
    }
    bitmap.Save(filename);
} else {
    // not a valid filename
}
于 2012-08-05T19:14:07.350 に答える
1

そうしないでください。SaveFileDialogコンポーネントを使用してください。パス、有効な名前を処理し、ドキュメントなどの特別なフォルダを取得します。

于 2012-08-05T19:06:44.270 に答える