「C Sharpの基礎 - ダイアログ」の版間の差分

編集の要約なし
(ページの作成:「== 概要 == ファイルを開くダイアログ(OpenFileDialog)は、ファイルの参照をするための機能を持ったダイアログである。<br> ファイ…」)
 
編集の要約なし
6行目: 6行目:
== OpenFileDialogの主なプロパティ ==
== OpenFileDialogの主なプロパティ ==
ファイルを開くダイアログのプロパティのうち、設定を意識する必要がある主なプロパティは表1に記載した次の15種類である。<br>
ファイルを開くダイアログのプロパティのうち、設定を意識する必要がある主なプロパティは表1に記載した次の15種類である。<br>
<center><big>'''表1. OpenFileDialogの主なプロパティ'''</big></center>
<center><big>'''表1. OpenFileDialogの主なプロパティ'''</big></center>
<center>
{| class="wikitable"
{| class="wikitable"
|-
|-
41行目: 43行目:
| Title || string || ダイアログのタイトルバーに表示されるタイトル文字列を設定する。
| Title || string || ダイアログのタイトルバーに表示されるタイトル文字列を設定する。
|}
|}
</center>
<br>
<br>
表1で記載したプロパティにおいて、既定値のままでよい(設定が不要)と考えられるプロパティは次の4種類である。<br>
拡張子の自動付加は必要なので既定値のtrueでよい。また、ファイル、ディレクトリの存在確認は必要なので既定値のtrueでよい。<br>
* AddExtension
* CheckFileExists
* CheckPathExists
* ShowHelp
<br><br>
== Filterプロパティ(ファイルの種類)の設定 ==
ダイアログで開くことができるファイルの種類は、Filterプロパティにフィルタ文字列を設定する。<br>
フィルタ文字列は、ファイルの説明とファイルの拡張子をバーティカルバーで区切って表現する。<br>
<center>'''表2. フィルタ文字列の設定例'''</center>
<center>
{| class="wikitable"
|-
! フィルタ !! フィルタ文字列
|-
| すべてのファイル || "すべてのファイル (*.*)|*.*"
|-
| テキストファイル || "テキストファイル (*.txt)|*.txt"
|-
| テキストファイルとすべてのファイル || "テキストファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*"
|-
| XMLファイル || "XML ファイル (*.xml)|*.xml"
|-
| HTMLファイル || "HTML ファイル (*.html, *.htm)|*.html;*.htm"
|-
| XMLファイルとHTMLファイルとすべてのファイル || "XML ファイル (*.xml)|*.xml|HTML ファイル (*.html, *.htm)|*.html;*.htm|すべてのファイル (*.*)|*.*"
|-
| イメージファイル || "イメージファイル (*.png, *.jpg, *.gif, *bmp)|*.png;*.jpg;*.gif;*bmp"
|}
</center>
ファイルの種類を複数設定した時、起動時に選択するファイルの種類を指定する場合はFilterIndexプロパティにインデックス値を指定する。(既定値 : 1)<br>
プルダウンの先頭の項目は1、2番目の項目は2を設定する。(プルダウンのインデックスは、1から始まるので注意)<br>
ユーザが選択したファイルの種類を保持しておき、次回に選択するファイルの種類を設定する場合には便利なプロパティである。<br><br>
== サンプルコード ==
<source lang="cpp">
/// <summary>
/// ボタンがクリックされたときのイベント処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
    try
    {
      // テキストボックスからファイル名(ファイルパス)を取得
      string fileName = this.textBox1.Text;
 
      // OpenFileDialog クラスのインスタンスを生成
      using (OpenFileDialog openFileDialog = new OpenFileDialog())
      {
          // ファイルの種類リストを設定
          openFileDialog.Filter = "テキストファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*";
 
          // テキストボックスにファイル名(ファイルパス)が設定されている場合、そのファイルのディレクトリを初期表示にする
          if (fileName != string.Empty)
          {
            // FileInfoクラスのインスタンスを生成
            FileInfo fileInfo = new FileInfo(fileName);
            // ディレクトリー名 (ディレクトリーパス) を取得
            string directoryName = fileInfo.DirectoryName;
            // 存在する場合は InitialDirectory プロパティに設定
            if (Directory.Exists(directoryName))
            {
                openFileDialog.InitialDirectory = directoryName;
            }
          }
          // ファイルの複数選択を許可する
          //openFileDialog.Multiselect = true;
          // ダイアログを表示
          DialogResult dialogResult = openFileDialog.ShowDialog();
          if (dialogResult == DialogResult.Cancel)
          {
            // キャンセルされたので終了
            return;
          }
          // 複数選択した全てのファイル名を取得
          //string[] fileNames = openFileDialog.FileNames;
          // 選択されたファイル名(ファイルパス)をテキストボックスに設定
          this.textBox1.Text = openFileDialog.FileName;
      }
    }
    catch (Exception ex)
    {
      MessageBox.Show(ex.Message);
    }
}
</source>
<br><br>
__FORCETOC__
[[カテゴリ:C_Sharp]]
匿名利用者