C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ドラッグアンドドロップについて

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■91826 / inTopicNo.1)  ドラッグアンドドロップについて
  
□投稿者/ 謎の人 (1回)-(2019/08/06(Tue) 19:14:25)

分類:[C#] 

初心者です。
●フォームへのドロップ
●EXEまたはEXEのショートカットへのドロップ
の双方で、ドロップしたファイルを処理するように書くことはできるのでしょうか?
引用返信 編集キー/
■91827 / inTopicNo.2)  Re[1]: ドラッグアンドドロップについて
□投稿者/ Hongliang (851回)-(2019/08/06(Tue) 19:32:01)
できます。それぞれ全く別経路にはなりますが。

フォームへのドロップは、FormのDragOverイベントやDragDropイベントで処理することになります。詳しくは「フォーム ファイル ドロップ」などで検索すると出てくるでしょう。

exeやそのショートカットへのドロップは、「新しくその実行ファイルが起動し、そのコマンドライン引数にファイルパスが渡される」という動作になります。
コマンドライン引数は、Mainメソッドの引数として取得することができます。ほかにもEnvironment.GetCommandlineArgs()メソッドによって任意のところで取得することもできます。
ちなみに、「アプリが既に起動中の場合、新しいアプリを起動するのではなく実行中のアプリにドロップされたファイルを渡す」のは結構ハードルが高いです。
引用返信 編集キー/
■91858 / inTopicNo.3)  Re[2]: ドラッグアンドドロップについて
□投稿者/ 謎の人 (2回)-(2019/08/07(Wed) 18:06:22)
回答ありがとうございます。

ウィンドウへのDDと引数の取得はできているのですが、
引数を private void xxx_DragDrop内の処理に渡す方法がわかりません…。
考え方自体が間違っているのかもしれませんが。
引用返信 編集キー/
■91865 / inTopicNo.4)  Re[3]: ドラッグアンドドロップについて
□投稿者/ Hongliang (853回)-(2019/08/07(Wed) 19:35:29)
> 引数を private void xxx_DragDrop内の処理に渡す方法がわかりません…。
> 考え方自体が間違っているのかもしれませんが。

一概には言えませんが、基本的にはよくない考え方といっていいでしょう。
こうするのがより良い記述といえます。

class Program {
    static void Main(string[] args) {
        // 引数の検証は略
        Form1 form = new Form1();
        form.AddFiles(args);
        Application.Run(form);
    }
}

class Form1 : Form {
    private void Form1_DragDrop(object sender, DragDropEventArgs e) {
        // 略
        string[] files = e.Data.GetData(...);
        this.AddFiles(files)l
    }
    public void AddFiles(string[] files) {
        // とりあえずリストボックスに全部追加する
        this.ListBox1.Items.AddRange(files);
    }
}

引用返信 編集キー/
■91878 / inTopicNo.5)  Re[4]: ドラッグアンドドロップについて
□投稿者/ 774RR (721回)-(2019/08/08(Thu) 08:27:23)
オイラが過去に組んだソフトで、ショートカットにD&Dしたら起動済みアプリに処理を投げるのは

using Microsoft.VisualBasic.ApplicationServices;
して StartupNextInstance を使っていたっす
https://dobon.net/vb/dotnet/process/checkprevinstance.html

引用返信 編集キー/
■91904 / inTopicNo.6)  Re[5]: ドラッグアンドドロップについて
□投稿者/ 謎の人 (3回)-(2019/08/09(Fri) 10:21:36)
すみません、解決済みとしました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ