C#_openFileDialog で選択したパスを表示

フィルパス表示と「...」ボタンを
まとめて設置できるツールがあると思っていたが、作る必要あり。

f:id:koshinRan:20170902204353p:plain

【前提】
個々のツール設置。

 

流れとしては、
Form1 からボタンをクリック。
Form2 が開く。
Form2 にはパス表示する textBox など設置。

Form2 のソース

    //File1 のボタンクリック
    private void buttonFile1_Click(object sender, EventArgs e)
    {
        textBoxFile1.Text = selectFile();
    }
    //File2 のボタンクリック
    private void buttonFile2_Click(object sender, EventArgs e)
    {
        textBoxFile2.Text = selectFile();
    }

    // openFileDialog
    private string selectFile()
    {
        openFileDialog.Filter = ".txt|.txt|*.*|*.*";
        if (openFileDialog.ShowDialog() != DialogResult.OK)
        {
            return "";
        }
        return openFileDialog.FileName;
    }


openFileDialog で複数のファイルを選択できるようにするには、
MultiSelectTrue にする。

 

その他の設定
・label の Anchor は、Top、Left。
・textBox の Anchor は、Top、Left、Right。
・button ( ... ) の Anchor は、Top、Right。
・buttonOK の Anchor は、Top。

 

 

ドラッグ & ドロップでも可能に

【前提】
textBoxAllowDropTrue 。( 動作 のカテゴリーにある )

ドラッグは textBoxFile 1 と textBoxFile 2 で
コード全く同じなのでなので、同じメソッドが呼ばれるようにする。

f:id:koshinRan:20170902214005p:plain

    //ドラッグ 共通
    private void textBox_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            e.Effect = DragDropEffects.Copy;
        }
        else
        {
            e.Effect = DragDropEffects.None;
        }
    }

    //FileTextBox1 にドロップ
    private void textBoxFile1_DragDrop(object sender, DragEventArgs e)
    {
        string fileName = (string)e.Data.GetData(DataFormats.FileDrop, false);
        textBoxFile1.Text = fileName[0];
    }

    //FileTextBox2 にドロップ
    private void textBoxFile2_DragDrop(object sender, DragEventArgs e)
    {
        string fileName = (string)e.Data.GetData(DataFormats.FileDrop, false);
        textBoxFile2.Text = fileName[0];
    }

 

こちらから。
https://www.slideshare.net/moririring/c-11822733

 

以上。