テキストボックスの中にファイルをドラックドロップしたい【C#】

目次

経緯

あるサイトでファイルをドラックドロップするとそのファイルを読み込んで処理を行っている所をみて、

それがC#でもできないのか考えました。

textBox.AllowDrop = true; にする

まず、コードを書きます。textboxをFormに作って、それにtxtファイルをドラックドロップすると、メッセージボックスで知らせてくれるという仕様です。

以下はそのコードです:

public Form()  
{
    InitializeComponent();

    textBox.AllowDrop = true;
    textBox.DragEnter += textBox_DragEnter;
    textBox.DragDrop += textBox_DragDrop;
}

private void textBox_DragEnter(object sender, DragEventArgs e)
{
    // ドラッグされているデータがファイルの場合、ドロップを許可する
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy;
    }
    else
    {
        e.Effect = DragDropEffects.None;
    }
}

private void textBox_DragDrop(object sender, DragEventArgs e)
{
    // ドロップされたファイルのリストを取得
    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);

    // 最初のファイルが.txtファイルの場合、処理を行う(複数のファイルのドロップは考慮していません)
    if (files.Length > 0 && Path.GetExtension(files[0]) == ".txt")
    {
        MessageBox.Show(".txtファイルがドロップされました。");
        // ここでその他の処理を追加できます
    }
    else
    {
        MessageBox.Show("有効な.txtファイルをドロップしてください。");
    }
}

こんな感じです。

何かの参考になれば、幸いです。

ここまで読んでいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次