一回も披露したことのない豆知識

[C#] OpenFileDialogによって得られた'Filename'を、Sting型にするには?

OpenFileDialogの処理をクラスにまとめて、そこから得られた文字列を返したいと思います。

---------------------------------------------------
class GetFileName
{
public void OpenFileDialog(StringBuilder name)
{
//OpenFileDialogクラスのインスタンスを作成
OpenFileDialog ofd = new OpenFileDialog();

ofd.FileName = "sd.zip";
ofd.InitialDirectory = @"C:\";
ofd.Filter =
"ZIP Failes(*.zip;*.zi_)|*.zip;*.zi_|All Files(*.*)|*.*";
ofd.FilterIndex = 1;
//タイトルを設定する
ofd.Title = "Please select the opening file.";
ofd.RestoreDirectory = true;
ofd.CheckFileExists = true;
ofd.CheckPathExists = true;

//ダイアログを表示する
if (ofd.ShowDialog() == DialogResult.OK)
{
//OKボタンがクリックされたとき
//選択されたファイル名を表示する
Console.WriteLine(ofd.FileName);
name = ofd.FileName;         <<<--- ここでエラーになる
}

}
}

//呼び出し元

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//
//  ボタン
//
private void buttonDec_Click(object sender, EventArgs e)
{
StringBuilder fname = new StringBuilder(256);

GetFileName gf;
gf = new GetFileName(); //インスタンス化

gf.OpenFileDialog(fname);
Console.WriteLine(fname); //
}
}


どのようにすれば、得られた文字列を戻すことが出来ますか。
以上、よろしくお願いします。

A 回答 (2件)

StringBuilderはStringの入れ物みたいな役割なので、


「中身」を入れ替えるような処置にします。

//現在の文字列を除去する
name.Remove(0, name.ToString().Length);
//ファイルのパス名を追加する
name.Append(ofd.FileName);
    • good
    • 0
この回答へのお礼

ありがとうございます。

希望道理、値を取得できました。

お礼日時:2010/09/01 18:12

そりゃそうでしょう。

StringBuilder型の変数にstring型のデータを代入しているんだから。

http://msdn.microsoft.com/en-us/library/system.w …

#個人的にはオブジェクトを渡すよりもreturnで戻り値を受け取る方が好き。
    • good
    • 0
この回答へのお礼

ご回答を戴きまして、ありがとうございます。

因みに、returnで戻り値を受け取る方は、どうさせれていますか。

お礼日時:2010/09/01 18:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!