連載:Windowsフォーム開発入門【Visual Studio 2010対応】
Windowsフォーム・コントロールの基礎(その2)
初音 玲
2010/09/14 |
|
|
■ダイアログ
[ツールボックス]の[ダイアログ]タブに含まれているコントロールは、いろいろな種類のダイアログ画面を表示するためのものだ。特にファイル関連のダイアログの利便性は高く、(ファイルを開いたり保存したりする必要がある場合に)このダイアログを使うことでWindowsフォームでの開発を確実に効率化できる。
●ColorDialogコントロール
ColorDialogコントロール(以下、ColorDialog)は、ガイドラインには「コモン・ダイアログ・ボックス」の「色」として規定されていて、利用者(=エンド・ユーザー)に色を指定させるためのダイアログ(図7参照)を表示する(なお、「ダイアログ」は「ダイアログ・ボックス」を省略した用語)。ColorDialogを表示するためのコマンド名としては[色(C)...]または[色の選択(C)...]が推奨されている。
|
図7 ColorDialogの表示例 |
下記のコードは、ボタンがクリックされたときにColorDialogを表示して、そこで利用者が選択した色をテキスト・ボックスの背景色に設定するサンプル・コード。
Private Sub Color_Button_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) _
Handles Color_Button.Click
Me.ColorDialog1.AllowFullOpen = False
If Me.ColorDialog1.ShowDialog = DialogResult.OK Then
Me.Color_TextBox.BackColor = Me.ColorDialog1.Color
End If
End Sub |
private void Color_Button_Click(object sender, EventArgs e)
{
this.ColorDialog1.AllowFullOpen = false;
if (this.ColorDialog1.ShowDialog() == DialogResult.OK)
{
this.Color_TextBox.BackColor = this.ColorDialog1.Color;
}
} |
|
リスト1 ColorDialogの使用例(上:VB、下:C#) |
●FolderBrowserDialogコントロール
FolderBrowserDialogコンロトール(以下、FolderBrowserDialog)は、ガイドラインには「コモン・ダイアログ・ボックス」の「フォルダを開く」として規定されていて、利用者にフォルダを選択させるためのダイアログ(図8参照)を表示する。FolderBrowserDialogを表示するためのコマンド名としては[フォルダーを開く(F)...]または[フォルダーの選択(F)...]が推奨されている。
|
図8 FolderBrowserDialogの表示例 |
下記のコードは、ボタンがクリックされたときにFolderBrowserDialogを表示して、そこで利用者が選択したフォルダのパスをテキスト・ボックスに設定するサンプル・コード。
Private Sub FolderBrowser_Button_Click(
ByVal sender As System.Object,
ByVal e As System.EventArgs) _
Handles FolderBrowser_Button.Click
Me.FolderBrowserDialog1.Description = "説明文"
Me.FolderBrowserDialog1.ShowNewFolderButton = True
Me.FolderBrowserDialog1.RootFolder = _
Environment.SpecialFolder.MyDocuments
If Me.FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
Me.FolderBrowser_TextBox.Text = _
Me.FolderBrowserDialog1.SelectedPath
End If
End Sub |
private void FolderBrowser_Button_Click(object sender, EventArgs e)
{
this.FolderBrowserDialog1.Description = @"説明文";
this.FolderBrowserDialog1.ShowNewFolderButton = true;
this.FolderBrowserDialog1.RootFolder =
Environment.SpecialFolder.MyDocuments;
if (this.FolderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
this.FolderBrowser_TextBox.Text =
this.FolderBrowserDialog1.SelectedPath;
}
} |
|
リスト2 FolderBrowserDialog の使用例(上:VB、下:C#) |
FolderBrowserDialogのプロパティで注意が必要なのはRootFolderプロパティだろう。RootFolderプロパティはダイアログの初期表示として「マイ ドキュメント」などの特殊なフォルダを開きたいときに使用する。もし、特殊なフォルダ以外を初期表示としたいときは、RootFolderプロパティは指定せずにSelectedPathプロパティに該当するフォルダのパスを指定してからShowDialogメソッドを呼ぶ。
●FontDialogコントロール
FontDialogコントロール(以下、FontDialog)は、ガイドラインには「コモン・ダイアログ・ボックス」の「フォント」として規定されていて、利用者にフォントを選択させるためのダイアログ(図9参照)を表示する。FontDialogを表示するためのコマンド名としては[フォント(F)...]または[フォントの選択(F)...]が推奨されている。
|
図9 FontDialogの表示例 |
下記のコードは、ボタンがクリックされたときにFontDialogを表示して、そこで利用者が選択したフォントをテキスト・ボックスのフォントとして設定するサンプル・コード。
Private Sub Font_Button_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) _
Handles Font_Button.Click
Me.FontDialog1.Font = Me.Font_TextBox.Font
If Me.FontDialog1.ShowDialog = DialogResult.OK Then
Me.Font_TextBox.Font = Me.FontDialog1.Font
Me.Font_TextBox.Text = Me.FontDialog1.Font.Name
End If
End Sub |
private void Font_Button_Click(object sender, EventArgs e)
{
this.FontDialog1.Font = this.Font_TextBox.Font;
if (this.FontDialog1.ShowDialog() == DialogResult.OK)
{
this.Font_TextBox.Font = this.FontDialog1.Font;
this.Font_TextBox.Text = this.FontDialog1.Font.Name;
}
} |
|
リスト3 FontDialogの使用例(上:VB、下:C#) |
●OpenFileDialogコントロール
OpenFileDialogコントロール(以下、OpenFileDialog)は、ガイドラインには「コモン・ダイアログ・ボックス」の「ファイルを開く」として規定されていて、利用者にファイルを選択させるためのダイアログ(図10参照)を表示する。OpenFileDialogを表示するためのコマンド名としては[開く(O)...]が推奨されている。
|
図10 OpenFileDialogの表示例 |
下記のコードは、ボタンがクリックされたときにOpenFileDialogを表示して、そこで利用者が選択したJPEGファイルの名前をテキスト・ボックスに設定するサンプル・コード。
Private Sub Open_Button_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) _
Handles Open_Button.Click
If Me.Open_TextBox.Text.Length = 0 Then
Me.OpenFileDialog1.FileName = "*.jpg"
Me.OpenFileDialog1.InitialDirectory =
Environment.GetFolderPath( _
Environment.SpecialFolder.MyPictures)
Else
Me.OpenFileDialog1.FileName =
System.IO.Path.GetFileName(Me.Open_TextBox.Text)
Me.OpenFileDialog1.InitialDirectory =
System.IO.Path.GetDirectoryName(Me.Open_TextBox.Text)
End If
Me.OpenFileDialog1.DefaultExt = "jpg"
Me.OpenFileDialog1.Filter = "JPEG (*.jpg)|*.jpg|すべて(*.*)|*.*"
Me.OpenFileDialog1.FilterIndex = 1
Me.SaveFileDialog1.RestoreDirectory = True
Me.OpenFileDialog1.Title = "ファイルを開く"
If Me.OpenFileDialog1.ShowDialog = DialogResult.OK Then
Me.Open_TextBox.Text = Me.OpenFileDialog1.FileName
End If
End Sub |
private void Open_Button_Click(object sender, EventArgs e)
{
if (this.Open_TextBox.Text.Length == 0) {
this.OpenFileDialog1.FileName = @"*.jpg";
this.OpenFileDialog1.InitialDirectory =
Environment.GetFolderPath(
Environment.SpecialFolder.MyPictures);
} else {
this.OpenFileDialog1.FileName =
System.IO.Path.GetFileName(this.Open_TextBox.Text);
this.OpenFileDialog1.InitialDirectory =
System.IO.Path.GetDirectoryName(this.Open_TextBox.Text);
}
this.OpenFileDialog1.DefaultExt = @"jpg";
this.OpenFileDialog1.Filter =
@"JPEG(*.jpg)|*.jpg|すべて(*.*)|*.*";
this.OpenFileDialog1.FilterIndex = 1;
this.SaveFileDialog1.RestoreDirectory = true;
this.OpenFileDialog1.Title = @"ファイルを開く";
if (this.OpenFileDialog1.ShowDialog() == DialogResult.OK) {
this.Open_TextBox.Text = this.OpenFileDialog1.FileName;
}
} |
|
リスト4 OpenFileDialogの使用例(上:VB、下:C#) |
OpenFileDialogは、初回表示時、つまり利用者がファイルを指定していない段階では「マイ ドキュメント」や「マイ ピクチャ」などの適切なフォルダを表示し、2回目以降は最後にOpenFileDialogで指定したファイルの存在するフォルダを表示するとガイドラインにある。
そのため、リスト4ではテキスト・ボックスに値が設定されていない(=Lengthプロパティが「0」)ときは「マイ ピクチャ」フォルダをInitialDirectoryプロパティに指定し、それ以外はGetDirectoryNameメソッドにより直前に指定したファイル名からフォルダ名を抜き出して、それをInitialDirectoryプロパティに指定している。
なお、OpenFileDialogはあくまでもファイルを指定するダイアログなので、リスト4のコードだけではデータをファイルから読み込むことはできない。従って、ShowDialogメソッドの結果が「DialogResult.OK」だった場合には、OpenFileDialogのOpenFileメソッドを実行して読み込み用のストリーム(=System.IO名前空間のStreamクラスのオブジェクト)を取得し、そのストリームからファイルのデータを読み込むコードが必要だ。
●SaveFileDialogコントロール
SaveFileDialogコントロール(以下、SaveFileDialog)は、ガイドラインには「コモン・ダイアログ・ボックス」の「ファイルを保存する」として規定されていて、利用者にファイルを選択させるためのダイアログ(図11参照)を表示する。SaveFileDialogを表示するためのコマンド名としては[名前を付けて保存(A)...]が推奨されている。
|
■図11 SaveFileDialogの表示例 |
下記のコードは、ボタンがクリックされたときにSaveFileDialogを表示して、そこで利用者が指定したファイル名をテキスト・ボックスに設定するサンプル・コード。
Private Sub Save_Button_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) _
Handles Save_Button.Click
If Me.Save_TextBox.Text.Length = 0 Then
Me.SaveFileDialog1.InitialDirectory =
Environment.GetFolderPath( _
Environment.SpecialFolder.MyPictures)
Else
Me.SaveFileDialog1.FileName =
System.IO.Path.GetFileName(Me.Save_TextBox.Text)
Me.SaveFileDialog1.InitialDirectory =
System.IO.Path.GetDirectoryName(Me.Save_TextBox.Text)
End If
Me.SaveFileDialog1.DefaultExt = "jpg"
Me.SaveFileDialog1.Filter = "JPEG(*.jpg)|*.jpg|すべて (*.*)|*.*"
Me.SaveFileDialog1.FilterIndex = 1
Me.SaveFileDialog1.RestoreDirectory = True
Me.SaveFileDialog1.Title = "ファイルの保存"
Me.SaveFileDialog1.OverwritePrompt = True
If Me.SaveFileDialog1.ShowDialog = DialogResult.OK Then
Me.Save_TextBox.Text = Me.SaveFileDialog1.FileName
End If
End Sub |
private void Save_Button_Click(object sender, EventArgs e)
{
if (this.Save_TextBox.Text.Length == 0)
{
this.SaveFileDialog1.InitialDirectory =
Environment.GetFolderPath(
Environment.SpecialFolder.MyPictures);
}
else
{
this.SaveFileDialog1.FileName =
System.IO.Path.GetFileName(this.Save_TextBox.Text);
this.SaveFileDialog1.InitialDirectory =
System.IO.Path.GetDirectoryName(this.Save_TextBox.Text);
}
this.SaveFileDialog1.DefaultExt = @"jpg";
this.SaveFileDialog1.Filter =
@"JPEG(*.jpg)|*.jpg|すべて(*.*)|*.*";
this.SaveFileDialog1.FilterIndex = 1;
this.SaveFileDialog1.RestoreDirectory = true;
this.SaveFileDialog1.Title = @"ファイルの保存";
this.SaveFileDialog1.OverwritePrompt = true;
if (this.SaveFileDialog1.ShowDialog() == DialogResult.OK)
{
this.Save_TextBox.Text = this.SaveFileDialog1.FileName;
}
} |
|
リスト5 SaveFileDialog の使用例(上:VB、下:C#) |
リスト5でもリスト4と同様に、初回と2回目以降でダイアログを開いたときのフォルダを変更している。このように2回目以降で前回保存したファイルのフォルダを初期表示しておけば、上書き保存をデフォルトの操作としたうえで別ファイル名保存の指定も簡単に行えるUIが実現できる。
なお、SaveFileDialogはあくまでもファイルを指定するダイアログなので、リスト5のコードだけではデータをファイルに保存することはできない。従って、ShowDialogメソッドの結果が「DialogResult.OK」だった場合には、SaveFileDialogのOpenFileメソッドを実行して保存用のストリームを取得し、そのストリームを利用してファイルへデータを書き出すコードが必要だ。
INDEX |
|
[連載]Windowsフォーム開発入門【Visual Studio 2010対応】 |
|
Windowsフォーム・コントロールの基礎(その2) |
|
1.メニューとツールバー |
|
2.ダイアログ |
|
3.コンテナ |
|