Code Log

プログラミングの勉強メモを残していきます。

C# 複数ファイルをドラッグ・アンド・ドロップしてテキストボックスにパスを入力する


スポンサーリンク

textboxにフォルダ(ディレクトリ)名をドラッグ・アンド・ドロップで入力する

visual studioのプロパティの稲妻のアイコンをクリックして、DragEnterとDragDropをダブルクリックする。
すると、新しいイベントを登録することができる。

private void dataDirBox_DragEnter(object sender, DragEventArgs e)
{

    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy;
    }
}

private void dataDirBox_DragDrop(object sender, DragEventArgs e)
{
    
    
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {                
        string[] drags = (string[])e.Data.GetData(DataFormats.FileDrop, false);
        FileAttributes attr = File.GetAttributes(drags[0]);

        if (attr.HasFlag(FileAttributes.Directory))
        {
            dataDirBox.Text = "";
            dataDirBox.Text = drags[0];
        }
        else
        {
            int visibleTime = 3000;
            toolTipUtil.Show("ディレクトリをドラッグ&ドロップしてください。", dataDirBox, 10, 10, visibleTime);
        }

    }
}

テキストボックスにファイル名をドラッグ・アンド・ドロップで入力する

private void excelFileTextBox_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy;
    }
}

private void excelFileTextBox_DragDrop(object sender, DragEventArgs e)
{
    int visibleTime = 3000;
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        string[] drags = (string[])e.Data.GetData(DataFormats.FileDrop, false);

        FileAttributes attr = File.GetAttributes(drags[0]);

        if (attr.HasFlag(FileAttributes.Directory))
        {
            graphkaTextBoxtoolTip.Show("ファイルをドラッグ&ドロップしてください。", dataDirBox, 10, 10, visibleTime);
            return;
        }
        else
        {
            excelFileTextBox.Text = "";
            excelFileTextBox.Text = drags[0];
        }
    }

}

複数ファイルをドラッグ・アンド・ドロップで入力する

private void fileTextBox_DragDrop(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        string[] drags = (string[])e.Data.GetData(DataFormats.FileDrop, false);
        StringBuilder sb = new StringBuilder();
        for (var i = 0; i < drags.Count(); i++)
        {
            FileAttributes attr = File.GetAttributes(drags[i]);
            if (!attr.HasFlag(FileAttributes.Directory))
            {
                sb.Append(drags[i] + Environment.NewLine);
            }
        }
        fileTextBox.Text = "";
        fileTextBox.Text = sb.ToString();
    }
}

private void fileTextBox_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy;
    }

}