Foxtable(狐表)用户栏目专家坐堂 → 求助,拖放的问题?


  共有1756人关注过本帖树形打印复制链接

主题:求助,拖放的问题?

帅哥哟,离线,有人找我吗?
hxjxclbj
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:85 积分:899 威望:0 精华:0 注册:2016/8/17 13:32:00
求助,拖放的问题?  发帖心情 Post By:2017/6/13 21:56:00 [只看该作者]

参与站内专家的代码,做了一个文件或图片拖放的案例,需要在拖放的窗口进行一些操作,如何获取实施拖放的窗口名?我是通过活动窗口的办法获取,必须保证拖入的窗口为活动的而不是文件所在的窗口,操作时非常麻烦,请高手指点。

全局代码如下:

Public Sub picture_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)

Dim paths As object() = e.Data.GetData(Windows.Forms.DataFormats.FileDrop)

For Each path As object In paths

    For i As Integer = 0 To 5 '有可能打开6个聊天窗口

        Dim frm As WinForm.Form = Forms("聊天内容" & i) '找出实施拖放的窗口

        If frm.Opened Then

            If frm.Name = Forms.ActiveForm.Name Then

                Vars("c_fname") = FileSys.GetName(path)

                If Vars("c_fname").Contains(".bmp") Or Vars("c_fname").Contains(".jpg") Or Vars("c_fname").Contains(".png") Then

                    Vars("c_fname") = Vars("c_fname") & "|2"

                Else

                    Vars("c_fname") = Vars("c_fname") & "|1"

                End If

MessageBox.Show(Vars("c_fname"))

                frm.Controls("bnfswj").PerformClick

            End If

        End If

    Next

Next

sender.Cursor = System.Windows.Forms.Cursors.IBeam

End Sub

 

Public Sub picture_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)

If (e.Data.GetDataPresent(Windows.Forms.DataFormats.FileDrop)) Then

    e.Effect = Windows.Forms.DragDropEffects.Link

    sender.Cursor = System.Windows.Forms.Cursors.Arrow

Else

    e.Effect = Windows.Forms.DragDropEffects.None

End If

End Sub


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/13 22:30:00 [只看该作者]

做个例子过来测试一下

 回到顶部
帅哥哟,离线,有人找我吗?
hxjxclbj
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:85 积分:899 威望:0 精华:0 注册:2016/8/17 13:32:00
  发帖心情 Post By:2017/6/13 23:03:00 [只看该作者]

已整合到一个大系统中,经过测试可行,就是太不方便,因为不知如何获得实施拖放行为的窗口名。截图如下:
图片点击可在新窗口打开查看此主题相关图片如下:演示文稿2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:演示文稿1.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
hxjxclbj
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:85 积分:899 威望:0 精华:0 注册:2016/8/17 13:32:00
  发帖心情 Post By:2017/6/13 23:09:00 [只看该作者]

因为需要在左窗口中进行代码操作

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/6/14 8:59:00 [只看该作者]

可以通过picture_DragDrop事件sender参数获取窗口标题

msgbox(sender.FindForm().Text)

 回到顶部
帅哥哟,离线,有人找我吗?
hxjxclbj
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:85 积分:899 威望:0 精华:0 注册:2016/8/17 13:32:00
  发帖心情 Post By:2017/6/14 10:41:00 [只看该作者]

多谢,已解决。尝试用 sender.FindForm().Name,省去 For...Next 循环直接应用,发现返回的是一个空值。呵呵。

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/14 11:23:00 [只看该作者]

这样也行

 

 sender.FindForm().controls(0).name


 回到顶部
帅哥哟,离线,有人找我吗?
hxjxclbj
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:85 积分:899 威望:0 精华:0 注册:2016/8/17 13:32:00
  发帖心情 Post By:2017/6/14 15:24:00 [只看该作者]

成了,谢谢色老师,代码简单清楚,不用循环判断了。代码如下:

Public Sub picture_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
Dim paths As object() = e.Data.GetData(Windows.Forms.DataFormats.FileDrop)
For Each path As object In paths
    Dim frm As WinForm.Form = Forms(sender.FindForm().controls(0).name)
    If frm.Opened
        Vars("c_fname") = path
        If Vars("c_fname").Contains(".bmp") Or Vars("c_fname").Contains(".jpg") Or Vars("c_fname").Contains(".png") Then
            Vars("c_fname") = Vars("c_fname") & "|2"
        Else
            Vars("c_fname") = Vars("c_fname") & "|1"
        End If
        frm.Controls("bnfswj").PerformClick
    End If
Next
sender.Cursor = System.Windows.Forms.Cursors.IBeam
End Sub


 回到顶部