WPFファイルのドラッグ·ドロップ

WPFファイルのドラッグ·ドロップ

ファイルをアップロードする場合、一般的にはアップロードボタンを1つ提供し、アップロードをクリックしてファイル(またはディレクトリ選択ダイアログ)をポップアップし、ファイル(またはディレクトリ)を選択した後、ダイアログボックスオブジェクトからファイルパスを取得した後、アップロード操作を行う。

最后更新 2020/11/27 11:10
沙漠尽头的狼
预计阅读 2 分钟
分类
WPF
标签
.NET WPF 文書を手に

1.本文開始前

ファイルをアップロードする場合、一般的にはアップロードボタンを1つ提供し、アップロードをクリックしてファイル(またはディレクトリ選択ダイアログ)をポップアップし、ファイル(またはディレクトリ)を選択した後、ダイアログボックスオブジェクトからファイルパスを取得した後、アップロード操作を行う。

ダイアログボックスファイルの選択

对话框选择文件

選択ダイアログボックスのコードは次のとおりです。

OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Title = "选择Exe文件";
openFileDialog.Filter = "exe文件|*.exe";
openFileDialog.FileName = string.Empty;
openFileDialog.FilterIndex = 1;
openFileDialog.Multiselect = false;
openFileDialog.RestoreDirectory = true;
openFileDialog.DefaultExt = "exe";
if (openFileDialog.ShowDialog() == false)
{
    return;
}
string txtFile = openFileDialog.FileName;

しかし、一般的に、ユーザーエクスペリエンスにとって最良のものは、ファイルを直接マウスでドラッグアンドドロップすることです。

100%ネット上でファイルをアップロード

百度网盘拖拽上传文件

WPFでのファイルドラッグアンドドロップの実装方法について簡単に説明します。

WPFでファイルをドラッグする方法は?

其实很简单,只要拖拽接受控件(或容器)注册这两个事件即可:DragEnterDrop

私の効果を見てください:

QuickAppにファイルをドラッグする

拖拽文件进QuickApp中

Xamlでイベントを登録する

イベントの登録:

<Grid
  MouseMove="Grid_MouseMove"
  AllowDrop="True"
  Drop="Grid_Drop"
  DragEnter="Grid_DragEnter"
></Grid>

イベント処理方法:

  1. Grid_DragEnter処理方法
private void Grid_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effects = DragDropEffects.Link;
    }
    else
    {
        e.Effects = DragDropEffects.None;
    }
}

DropDragEffects.Link:ドラッグアンドドロップファイル操作の処理

  1. Grid_Dropの処理方法

这是处理实际拖拽操作的方法,得到拖拽的文件路径(如果是操作系统文件快捷方式(扩展名为 lnk),则需要使用 com 组件(不是本文讲解重点,具体看本文开源项目)取得实际文件路径)后,即可处理后续操作(比如文件上传)。

private void Grid_Drop(object sender, DragEventArgs e)
{
    try
    {
        var fileName = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();
        MenuItemInfo menuItem = new MenuItemInfo() { FilePath = fileName };

        // 快捷方式需要获取目标文件路径
        if (fileName.ToLower().EndsWith("lnk"))
        {
            WshShell shell = new WshShell();
            IWshShortcut wshShortcut = (IWshShortcut)shell.CreateShortcut(fileName);
            menuItem.FilePath = wshShortcut.TargetPath;
        }
        ImageSource imageSource = SystemIcon.GetImageSource(true, menuItem.FilePath);
        System.IO.FileInfo file = new System.IO.FileInfo(fileName);
        if (string.IsNullOrWhiteSpace(file.Extension))
        {
            menuItem.Name = file.Name;
        }
        else
        {
            menuItem.Name = file.Name.Substring(0, file.Name.Length - file.Extension.Length);
        }
        menuItem.Type = MenuItemType.Exe;

        if (ConfigHelper.AddNewMenuItem(menuItem))
        {
            AddNewMenuItem(menuItem);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

3.この論文は

機能は非常にシンプルで、深く求めていない、それを使用します。

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2025/09/13

WPFからAvaloniaへの移行シリーズ:WPFプログラムをAvaloniaに移行する必要がある理由

ここ数年、当社のホストソフトウェアは主にWPFとWin Formで開発されてきました。これらのテクノロジーはWindowsプラットフォームで非常にうまく機能し、小規模なパイロット生産から今日の大規模なデリバリまでの段階を経てきました。しかし、ビジネスの成長と顧客のニーズの変化に伴い、単一のWindowsテクノロジースタックは私たちが乗り越えなければならないハードルになりました。

继续阅读
同分类 / 同标签 2025/01/26

WPFはカスタムXMLファイルで国際化を実現

この記事では、必要なNuGetパッケージのインストール、言語リストの動的取得、言語の動的切り替え、コードとxamlインターフェイスでの翻訳文字列の使用、開発者がWPFアプリケーションを簡単に国際化できるようにするソースコードへのリンクなど、WPFプログラムでカスタムXMLファイルを使用した国際化の方法について詳しく説明します。

继续阅读