关于 .Net中文件拖放的问题

今日需要做个功能,就是客户直接拖动文件到winForm界面上,然后显示文件内容。

其实这个功能点就是 获取拖动文件的路径即可。

一般都是需设置三个地方:

1、接受文件的控件的 AllowDrop 属性设置为 true。

2、接受文件的控件加上 DragDrop 事件。

this.dgv_openJsonFile1.Cursor = System.Windows.Forms.Cursors.Default;
            if(!e.Data.GetDataPresent(DataFormats.FileDrop)) {
                return;
            }
            var path = e.Data.GetData(DataFormats.FileDrop) as string[];
            if(path != null && path.Length > 0) {
                var jsonPath = path[0];
                if(!string.IsNullOrEmpty(jsonPath)) {
                  // TODO:jsonPath 及文件的路径。。。
                }
            }


3、接受文件的控件加上 DragEnter事件。

if(e.Data.GetDataPresent(DataFormats.FileDrop)) {
                e.Effect = DragDropEffects.Link;
                this.dgv_openJsonFile1.Cursor = System.Windows.Forms.Cursors.Arrow;
            } else {
                e.Effect = DragDropEffects.None;
            }


只需以上三个即可

可是我却搞了很久没搞出来。

知道最后才知道,原来是因为 权限问题:

因为不同权限提升级别的程序之间无法共享拖放消息。您可以做一个简单的实验。用管理员运行记事本,然后从 Windows 资源管理器拖 TXT 文件进去,可以发现文件根本不会打开。因为 Windows Explorer 的权限提升级别为 InvokeAsUser,而不是 RequireAdministrator。
同样级别的权限提升账户运行的程序可以 Share 拖放。
如果不涉及到系统的资源,如拖文件。自己程序内的拖动与 UAC 的级别无关。


我的原因是因为我以管理员身份运行了VS···去掉以管理员身份运行,及正常。



### 关于ArcGIS License Server无法启动的解决方案 当遇到ArcGIS License Server无法启动的情况,可以从以下几个方面排查并解决问题: #### 1. **检查网络配置** 确保License Server所在的计算机能够被其他客户端正常访问。如果是在局域网环境中部署了ArcGIS Server Local,则需要确认该环境下的网络设置是否允许远程连接AO组件[^1]。 #### 2. **验证服务状态** 检查ArcGIS Server Object Manager (SOM) 的运行情况。通常情况下,在Host SOM机器上需将此服务更改为由本地系统账户登录,并重启相关服务来恢复其正常工作流程[^2]。 #### 3. **审查日志文件** 查看ArcGIS License Manager的日志记录,寻找任何可能指示错误原因的信息。这些日志可以帮助识别具体是什么阻止了许可服务器的成功初始化。 #### 4. **权限问题** 确认用于启动ArcGIS License Server的服务账号具有足够的权限执行所需操作。这包括但不限于读取/写入特定目录的权利以及与其他必要进程通信的能力。 #### 5. **软件版本兼容性** 保证所使用的ArcGIS产品及其依赖项之间存在良好的版本匹配度。不一致可能会导致意外行为完全失败激活license server的功能。 #### 示例代码片段:修改服务登录身份 以下是更改Windows服务登录凭据的一个简单PowerShell脚本例子: ```powershell $serviceName = "ArcGISServerObjectManager" $newUsername = ".\LocalSystemUser" # 替换为实际用户名 $newPassword = ConvertTo-SecureString "" -AsPlainText -Force Set-Service -Name $serviceName -StartupType Automatic New-ServiceCredential -ServiceName $serviceName -Account $newUsername -Password $newPassword Restart-Service -Name $serviceName ``` 上述脚本仅作为示范用途,请依据实际情况调整参数值后再实施。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值