我正在尝试使用WinForms创建文件管理器。我制作了一个导航栏,两个按钮,一个用于返回,另一个用于转发导航。
当我处于WebBrowser格式时,我想返回导航,然后按BACKSPACE键。显然这工作正常,但是当我想要擦除重命名文件的字符时,会调用BACKSPACE键事件。
如何检查WebBrowser中是否选择了文件并仅在没有的情况下应用返回导航?
private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Back)
{
//Do only if no selected items in WebBrowser
webBrowser1.GoBack();
}
}
答案 0 :(得分:0)
我可能会尝试启动名为fileSelected = false;
您使用什么对象来显示文件?换句话说,在列表中选择文件的对象是什么?我假设ListBox
?
然后,使用ListBox.SelectedIndexChanged
事件选择文件时,将此项设置为true。有关处理此活动的更多信息here。
您的if
声明将如下所示:
if (e.KeyCode == Keys.Back && !fileSelected)
{
//Do only if no selected items in WebBrowser
webBrowser1.GoBack();
}
屏幕截图也可能有用。希望这会有所帮助。
答案 1 :(得分:0)
好吧,试试吧。这有点像黑客,但我认为它会做你想做的事情(检测是否有任何文件)。
using System.Collections.Specialized;
private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
Clipboard.Clear();
SendKeys.Send("^C");
StringCollection sc = Clipboard.GetFileDroplist();
Clipboard.Clear();
if(sc.Count == 0) // Meaning no files in the list were copied
{
if (e.KeyCode == Keys.Back)
{
//Do only if no selected items in WebBrowser
webBrowser1.GoBack();
}
}
}
以下是这基本上是做什么的:
1。立即清除剪贴板
2。发送命令以复制选择的内容(是否选择了一个或多个文件)
3。将选定的文件列表返回到StringCollection中
4。测试StringCollection是否为空
就像我说的,有点黑客,但我认为没有任何其他方法可以确定是否有使用任何其他方法的选择。