///////////////////////////////////
//C#のファイルとフォールダーの選択
///////////////////////////////////

using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;				//Pathクラスを使う為

class Select_File_Folder
{
	[STAThread]
	public static void Main()
	{
		MainForm mf = new MainForm();
		Application.Run(mf);
	}
}

public partial class MainForm : Form
{
	public Label label;

	public MainForm()
	{
		Button btn1 = new Button();
		btn1.Location = new Point(10, 10);
		btn1.Text = "File Open Dialog";
		btn1.AutoSize = true;
		btn1.Click += new EventHandler(Button1_Click);
		Button btn2 = new Button();
		btn2.Location = new Point(10, 20 + btn1.Height);
		btn2.Text = "Folder Brouser Dialog";
		btn2.AutoSize = true;
		btn2.Click += new EventHandler(Button2_Click);
		Button btn3 = new Button();
		btn3.Location = new Point(this.ClientSize.Width - btn3.Width - 10, this.ClientSize.Height - btn3.Height - 10);
		btn3.Text = "Exit";
		btn3.AutoSize = true;
		btn3.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right);
		btn3.Click += new EventHandler(Button3_Click);
		label = new Label();
		label.Location = new Point(10, 30 + btn1.Height + btn2.Height);
//		label.AutoSize = true;
		label.AutoSize = false;
		Size sz = new Size(this.ClientSize.Width - 20, this.ClientSize.Height - (40 + btn1.Height + btn2.Height));
		label.Size = sz;
		this.Controls.Add(btn1);
		this.Controls.Add(btn2);
		this.Controls.Add(btn3);
		this.Controls.Add(label);
	}

	private void Button1_Click(object sender, EventArgs e)
	{
		OpenFileDialog ofDlg = new OpenFileDialog();
		//初期ファイル名の指定
		ofDlg.FileName = "*.*";
		//ファイルフィルターの指定
		ofDlg.Filter = "C#ファイル(*.cs)|*.cs|すべてのファイル(*.*)|*.*";
		//ファイルフィルターインデックスの指定
		ofDlg.FilterIndex = 2;
		//ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする
		ofDlg.RestoreDirectory = true;
		//存在しないファイルの名前が指定されたとき警告を表示する
		ofDlg.CheckFileExists = true;
		//存在しないパスが指定されたとき警告を表示する
		ofDlg.CheckPathExists = true;
		// デフォルトのフォルダを指定する
		ofDlg.InitialDirectory = @"C:\users\ysama\";
		//ダイアログのタイトルを指定する
		ofDlg.Title = "ファイルを開く";
		//ダイアログを表示する
		if(ofDlg.ShowDialog() == DialogResult.OK)
		{
			label.Text = ofDlg.FileName + " が選択されました。";
			string oldPath = ofDlg.FileName;
			//拡張子を変更する
			string newPath = Path.ChangeExtension(oldPath, ".bak");
			MessageBox.Show(String.Format("選択された{0}のバックアップファイル、{1}を作ります", oldPath, newPath), "バックアップの作成", MessageBoxButtons.OK, MessageBoxIcon.Information);
			//バックアップファイルを作成する
			File.Copy(oldPath, newPath);
 		}
		else
		{
			label.Text = "キャンセルされました。";
		}
		// オブジェクトを破棄する
		ofDlg.Dispose();
	}

	private void Button2_Click(object sender, EventArgs e)
	{
		FolderBrowserDialog fbDlg = new FolderBrowserDialog();
		// ダイアログの説明文
		fbDlg.Description = "フォルダを選択してください。";
		// デフォルトのフォルダ
		fbDlg.SelectedPath = @"C:\";
		// 「新しいフォルダーの作成する」ボタンを表示する（デフォルトはtrue）
		fbDlg.ShowNewFolderButton = true;
		//フォルダを選択するダイアログを表示する
		if(fbDlg.ShowDialog() == DialogResult.OK)
		{
			label.Text = fbDlg.SelectedPath + "が選択されました。";
		}
		else
		{
			label.Text = "キャンセルされました。";
		}
		// オブジェクトを破棄する
		fbDlg.Dispose();
	}

	private void Button3_Click(object sender, EventArgs e)
	{
		Close();
	}
}
