【C#】【vs2017】ボタンを押してファイルを選択する

ボタンを押してファイルを選択する
 
こちら のページを参考に実装してみた。
ただ、私には難しかったので、ファイルを開くためのボタンは 1個だけにした。
 

 

コード

MainWindow.xaml

<Window x:Class="WpfOpenFile.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfOpenFile"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <StackPanel HorizontalAlignment="Left" Height="65" VerticalAlignment="Top" Width="782">
            <Button Content="ファイルを開く" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" RenderTransformOrigin="0.307,-0.55" Click="FileOpenButton_Click"/>
            <TextBlock x:Name="textBlockFileName" Height="18"/>
        </StackPanel>
    </Grid>
</Window>

 

MainWindow.xaml.cs

  • OpenFileDialog() を使うためには「using Microsoft.Win32;」が必要である。
  • MainWindow.xaml の TextBlock で定義した名前 textBlockFileName を呼び出している
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Win32; // WPF で OpenFileDialog を使うために必要

namespace WpfOpenFile
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void FileOpenButton_Click(object sender, RoutedEventArgs e)
        {
            // 1. インスタンスを生成する。
            OpenFileDialog dialog = new OpenFileDialog();

            // 2. Titleプロパティと、Filterプロパティを設定する。
            dialog.Title = "ファイルを開く";
            dialog.Filter = "全てのファイル(*.*)|*.*";

            // 3. ShowDialogを呼び出してダイアログを表示する。
            if (dialog.ShowDialog() == true)
            {
                // textBlockFileName は MainWindow.xaml で以下のように定義している
                // <TextBlock x:Name="textBlockFileName" Height="18"/>
                this.textBlockFileName.Text = dialog.FileName;
            }
            else
            {
                this.textBlockFileName.Text = "キャンセルされました";
            }
            // 4. ダイアログの戻り値を確認してOKが押されている場合は、
            // FileNameプロパティかFileNamesプロパティを使用して選択されたファイルを取得する。
            // (---- ここは .NET がよろしく処理してくれる ----)
        }
    }
}

 

実行結果

起動時

f:id:dnkrnka:20180923013215p:plain
 

ファイル選択中

f:id:dnkrnka:20180923013320p:plain
 

ファイル選択後

f:id:dnkrnka:20180923013400p:plain