Windowsの仕様
エディション:Windows 10 Pro
バージョン:20H2
目次
経緯
あるサイトでファイルをドラックドロップするとそのファイルを読み込んで処理を行っている所をみて、
それが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ファイルをドロップしてください。");
}
}
こんな感じです。
何かの参考になれば、幸いです。
ここまで読んでいただきありがとうございました。