【Win10】文件拖放打开

在 Windows 10 中,通用应用程序在桌面环境下是支持从资源管理器拖放文件打开的。

这篇博文将演示拖放图片或文本文件,并在程序中打开显示。

前台 XAML:

<Page x:Class="DropDemo.MainPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:local="using:DropDemo"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      mc:Ignorable="d">
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
          AllowDrop="True"
          DragOver="Grid_DragOver"
          Drop="Grid_Drop">
        <Image x:Name="img"
               Visibility="Collapsed" />
        <TextBlock x:Name="txt"
                   Visibility="Collapsed"
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"
                   FontSize="30" />
    </Grid>
</Page>

需要注意的是,能够接受拖放的控件的 Background 属性必须不能为 null,例如上面代码中,如果我们将 Grid 的 Background 属性去掉的话,则拖放就不起作用了。假如要实现一个拖放区域的话,那么我们可以将控件的 Background 属性设置为 Transparent,即为透明。这一点跟处理透明控件的点击事件是类似的。

后台代码:

DragOver 方法:

private void Grid_DragOver(object sender, DragEventArgs e)
{
    e.AcceptedOperation = DataPackageOperation.Copy;

    // 设置拖放时显示的文字。
    e.DragUIOverride.Caption = "拖放打开";

    // 是否显示拖放时的文字。默认为 true。
    // e.DragUIOverride.IsCaptionVisible = false;

    // 是否显示文件预览内容,一般为文件图标。默认为 true。
    // e.DragUIOverride.IsContentVisible = false;

    // Caption 前面的图标是否显示。默认为 true。
    // e.DragUIOverride.IsGlyphVisible = false;

    e.DragUIOverride.SetContentFromBitmapImage(new BitmapImage(new Uri("ms-appx:///Assets/dropContent.jpg")));

    e.Handled = true;
}

1、Caption 属性

如果没设置的话,则会根据 AcceptedOperation 的值来显示,例如 Copy 的话显示复制,Move 的话,显示移动。

2、IsGlyphVisible 属性

true:

false:

可以明确看见文本前面的图标是否显示。

3、SetContentFromBitmapImage 方法

这个方法可以传入一个图片,拖放的时候就可以显示图片了,例如我上面设置了一幅金馆长。如果没指定的话,则会显示文件的图标。

Drop 方法:

private async void Grid_Drop(object sender, DragEventArgs e)
{
    var defer = e.GetDeferral();

    try
    {
        DataPackageView dataView = e.DataView;
        // 拖放类型为文件存储。
        if (dataView.Contains(StandardDataFormats.StorageItems))
        {
            var files = await dataView.GetStorageItemsAsync();
            var file = files.OfType<StorageFile>().First();
            if (file.FileType == ".png" || file.FileType == ".jpg")
            {
                // 拖放的是图片文件。
                BitmapImage bitmap = new BitmapImage();
                await bitmap.SetSourceAsync(await file.OpenAsync(FileAccessMode.Read));
                img.Source = bitmap;

                img.Visibility = Visibility.Visible;
                txt.Visibility = Visibility.Collapsed;
            }
            else if (file.FileType == ".txt")
            {
                // 拖放的是文本文件。
                string text = await FileIO.ReadTextAsync(file);
                txt.Text = text;

                img.Visibility = Visibility.Collapsed;
                txt.Visibility = Visibility.Visible;
            }
        }
    }
    finally
    {
        defer.Complete();
    }
}

由于 DragEventArgs 对象有 GetDeferral 方法,并且我们使用到异步方法,所以要先获取 defer 对象,异步方法完成后再调用 defer 对象的 Complete 方法。这点跟后台任务是类似的。

效果:

Demo 下载:http://download.csdn.net/detail/h82258652/8838711

时间: 2024-08-28 08:32:02

【Win10】文件拖放打开的相关文章

C#中实现文件拖放打开的方法

C#中实现文件拖放打开的方法 设置Form属性 AllowDrop = True; 在Form事件中 private void Form1_DragDrop(object sender, DragEventArgs e) { string localFilePath = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();//文件完整路径 string extension = System.IO.

如何在当前文件夹打开cmd(基于win10)

如何在当前文件夹打开cmd(基于win10) 方法一: 1.先打开你要进入的文件夹 2.在标记的位置输入cmd,就可以进入当前文件的cmd 方法二: 1.打开你要进入的文件夹 2.通过shift + 鼠标右击 3.选择powerShell窗口(其他windows可以在这里直接打开cmd) 4.输入cmd命令 原文地址:https://www.cnblogs.com/GetcharZp/p/9269963.html

【Win10技巧】如何设置win10资源管理器打开为“这台电脑”?

习惯了点击"资源管理器"后就能快速的打开自己的文件,现在win10系统上却是默认打开"快速访问"界面,虽然这种设计会让某些操作更加便捷,但是对于我们这种使用windows的"良好习惯",是短时间适应不来的,并且我们也不需要去是适应它. 现在我就来说下如何设置win10资源管理器打开为"这台电脑"? 打开win10的资源管理器(快捷键:win+E),默认的界面是这样的: 2.在资源管理器的功能区中找到[查看]后,点击[选项]:

Win10文件访问被拒绝如何解决

最近有Win10系统用户反映,打开文件夹时出现提示框“你当前无权访问该文件夹”,这是怎么回事呢?其实,这是Win10系统为了保护系统文件的安全所给出的安全警告.只要提升自己的访问权限就可以访问相对应的文件夹.下面,我们一起来看看提升访问文件夹权限的方法. 方法/步骤 1.打开系统盘中受Win10正式版系统保护的系统文件夹时,弹出如图所示的“你当前无权访问该文件夹”提示窗口,在此直接点击“继续”按钮. 2.从随后弹出的“拒绝你访问该文件夹”窗口中,点击“安全选项卡”按钮进入.如图所示. 3.此时将

win10 文件扩展名的更改

win10 文件扩展名的改 随便打开一个文件夹,最好是"此电脑",  第二行是 "     文件  -   计算机  -  查看   " 在查看里面就可以更改了. 原文地址:https://www.cnblogs.com/jack20181017/p/10139885.html

win10设置默认打开方式

layout: post title: win10设置默认打开方式 date: 2018-12-29 9:10:50 group: tags: win10设置默认打开方式 我们有的软件只显示了一个文件,打开会提示你选择一个软件来打开,每次都选择的话就很麻烦.我们就要配置一下这些文件的默认打开软件. 解决方式 右键这个文件,选择属性 打开后选择红色圈住的地方 就会打开软件的列表,有一些固定的推荐软件,也可以自己去找软件的运行方式来打开. 选择这在电脑上查找其他应用,选择一个软件的exe文件点击打开

Win10提示“无法打开此计算机上的组策略对象”如何解决

为了更好地管理电脑,很多朋友都会去编辑Windows10的组策略.不过,有部分用户反馈自己在打开组策略的时候,遇到了“无法打开此计算机上的组策略对象”提示,无法打开组策略,这是怎么回事呢?下面,小编就与大家一起分享下Win10提示“无法打开此计算机上的组策略对象”的解决方法. 具体方法如下: 1.我们先来看一下打开组策略编辑器的时候的错误提示如下图: 2.关闭刚才的错误提示,进入电脑上c:\Windows\System32文件夹,然后点击窗口上的查看标签: 3.接着点击工具栏上的“选项”按钮:

C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器,它能够长期保留信息,能读能写,可以刷新重写,方便携带,因而得到广泛使用. 文件(file)是程序设计中一个重要的概念.所谓“文件”,一般指存储在外部介质上数据的集合.一批数据是以文件的形式存放在外部介质(如磁盘.光盘和U盘)上的.操 作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部

文件I/O操作之文件的打开,创建,关闭和定位-基于Linux系统文件IO

1. 打开文件 #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> int open(const char *pathname,int flag); //打开一个现有的文件 int open(const char *pathname,int flags,mode_t mode); //若文件不存在,则先创建它 //成功则返回文件描述副,否则返回-1 //pathname为文件的相对或绝对路径名 文件描