Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 从shell中删除文件_Vb.net - Fatal编程技术网

Vb.net 从shell中删除文件

Vb.net 从shell中删除文件,vb.net,Vb.net,我正在尝试将一个文件从windows资源管理器拖放到我的窗体,我几乎成功:) 在shell中打开资源管理器窗口后,我可以将一个文件放到我的表单中,在接受之前,我有一个消息框/对话框 问题在于,我的带有问题的messagebox在资源管理器窗口的后面打开。 下面是一个代码: Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles My

我正在尝试将一个文件从windows资源管理器拖放到我的窗体,我几乎成功:)
在shell中打开资源管理器窗口后,我可以将一个文件放到我的表单中,在接受之前,我有一个消息框/对话框

问题在于,我的带有问题的messagebox在资源管理器窗口的后面打开。 下面是一个代码:

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.AllowDrop = True
End Sub

Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        Dim Files() As String
        Files = e.Data.GetData(DataFormats.FileDrop)
        If Files.Length > 0 Then
            Dim ret As Integer = MsgBox("Would you like to upload file?" & vbNewLine & Files(0), MsgBoxStyle.OkCancel + MsgBoxStyle.Question, "Decide please")
            If ret = DialogResult.OK Then
                myModule.UploadF()
            End If
        End If
    End If
End Sub

Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then
        e.Effect = DragDropEffects.All
    Else
        e.Effect = DragDropEffects.None
    End If
End Sub

Private Sub btn_open_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_open.Click
    Shell("explorer c:\", AppWinStyle.NormalFocus)
End Sub

End Class
1) 有没有办法让messagebox在浏览器窗口前弹出?
2) 使用后如何从我的程序关闭打开的资源管理器窗口

编辑:解决方案…
1) 是放置我。在MsgBox之前激活
2) 为此,我仍然找不到解决方案。

试试这个:

将对话框添加到项目中。(可在可添加的事物列表中找到,如表单、类等)。 向其添加标签并更改构造函数中的文本。 在“绘制事件”对话框中添加以下内容:

Me.BringToFront()
然后使用此对话框而不是MsgBox,它应该提供您需要的内容

这有点像是一种变通办法,但应该会奏效

编辑:

对,找到了更好的解决方案

在调用MsgBox之前,请将其添加到此问题中编写的代码中:

Me.BringToFront()
Me.TopMost = True

你会没事的。

我知道你已经接受了答案,但我同意Hans的观点,即这个实现是有缺陷的。如果用户必须单击上载按钮,则启动openfiledialog。打开一个简单的浏览器窗口,他们必须从中拖动,这是非常违反直觉的

您可以保留拖放功能,但允许用户打开自己的资源管理器窗口来使用该功能

更直观的实现是将dragdrop功能添加到面板中,并具有一个标签和一个按钮,以便用户可以选择其中一种方法

大概是这样的:


很少有文件类型表现不同,因此请注意,正常人根据自己的意愿/需要来决定是正常的!从这个角度来看,“不要使用任何对话框”不是一个接近我需要的答案!我尝试了这个,它的行为和内置的msgbox在z-顺序中的行为一样。谢谢WozzeC的帮助。在另一个论坛的帮助下,我已经通过使用我解决了这个问题(使用原始消息框)。在msgbox之前激活。但你给了我一个好主意。有了这样的对话框,我可以使我自己的消息框在任何地方都可以显示,并具有更多功能,如“不再显示此消息”、完全本地化的按钮等:)超级骗子。是的,很容易忘记使用手动创建的对话框的可能性。好吧,你应该接受我的“上传”场景是象征性的,有些用户不熟悉通过浏览器导航,也不想在这种工作中浪费时间。此外,为了接受备份文件而从数据库中删除所有数据至少应该有一个问题(在删除之前)。但是,你给用户选择的想法是好的!