1
9
警告:带有大量代码的长帖子。 当您将web浏览器控件导航到文件系统文件夹时,web浏览器控件将承载一个shell视图窗口,该窗口将承载资源管理器列表视图。事实上,这与Explorer进程以及文件对话框和Internet Explorer所做的事情完全相同。此shell窗口不是控件,因此没有可以对其调用的方法或可以订阅的事件,但它可以接收windows消息,并且可以对其进行子分类。 事实证明,问题中有关自动将视图设置为详细信息的部分实际上相当简单。在web浏览器控件的导航事件中,只需找到shell视图窗口的句柄,并向其发送带有特定shell常量的WM_命令消息(SHVIEW_报告)。这是一个未记录的命令,但在Windows 2008之前(包括Windows 2008)的所有Windows平台上都支持该命令,而且几乎肯定会在Windows 7上支持该命令。要添加到web浏览器表单中的一些代码演示了这一点:
对于问题的第二部分,您希望从资源管理器列表视图接收事件。这比第一部分要难一点。要做到这一点,您需要对列表视图窗口进行子分类,然后监视windows消息中您感兴趣的消息(例如WM_lbuttondblck)。为了对窗口进行子类化,您需要创建从NativeWindow类派生的自己的类,并将需要监视的窗口句柄分配给它。然后,您可以重写其窗口过程,并根据需要处理各种消息。下面是一个创建双击事件的示例-它相对简单,但要广泛访问资源管理器列表视图可能需要比您愿意做的更多的工作。 将以下内容添加到您的表单中:
这两行代码指向导航的事件处理程序(就在SendMessage之后):
然后添加以下类:
这会让你知道你需要做什么。如果您想要的不仅仅是简单的事件,那么您可能需要寻找一个替代控件,尽管从我在免费和低成本领域看到的情况来看,有一些相当不错的控件,但它们都有一些怪癖,无法提供无缝的explorer体验。
|
2
5
为了处理重命名、删除和进行其他自定义,您需要编写自己的文件资源管理器。WebBrowser控件不适合您的需要。它只是ActiveX组件的包装器。
|
3
3
LogicNP软件有两个控件(FileView和ShComboBox),它们可以满足您的需要: http://www.ssware.com/fldrview.htm 您可以从他们的页面下载试用版,但许可证费用约为130美元。 |
4
3
http://gong-shell.sourceforge.net/ 您要查找的控件是ShellView。那里也有关于如何在几行代码中创建简单的Windows资源管理器克隆的教程。 .NET 4.0用户注意事项 :锣壳当前已损坏4.0。该框架引入了互操作方面的更改,它可以很好地构建,但在与shell32接口时会引起不同的问题(特别是shellicon api,导致非托管空指针取消引用)。 |
5
1
看看这篇文章 here ,它展示了如何在.NET和WinForms中执行此操作。这样做可以完全控制用户看到的内容。 我在我的一个应用程序中使用过它,它运行得非常好。您可以显示图标/详细信息/列表视图,它会阻止用户移动到其他目录(这通常是显示标准文件/目录对话框的问题)。 我用它来显示屏幕,如下图所示 below http://img7.imageshack.us/img7/7647/screenshotbaf.png : |
6
1
|
7
1
如果您很高兴只使用WindowsVista并包装 COM 控制 IExplorerBrowser 可能适合您的需要。 This The Code Project article 显示了它在 MFC 程序但是 at least one other person 较新的API公开了比简单地拦截消息多得多的可编程性,但它(显然)对较旧的平台毫无用处。 |
8
0
如果要打开其他窗口以显示目标文件夹的内容,可以使用System.Windows.Forms.OpenFileDialog或SaveFileDialog,或从FileDialog继承并扩展它。 要允许用户选择文件夹,可以使用FolderBrowserDialog,但作为用户,我不喜欢该控件。 这是否有帮助,或者您必须在表单中嵌入控件? 阿萨夫 |
JOO · 使用udpClient从多个IP地址连续接收数据 2 年前 |
Futterkiste · 函数比例图 2 年前 |
user18789895 · 我应该如何验证WinForms应用程序? 2 年前 |
beriscen · 如何使整个链接标签区域可点击? 2 年前 |
lpmaxim · 当鼠标光标悬停在按钮上时,背景图像会移动 2 年前 |