我有一个列表框,它显示我的下载文件夹中的文件。但我还有一个过滤器复选框,如果我选择它,它只会将结果优化为 .zip 扩展名。因此,如果我选中该框,它本质上需要清除/重置/刷新数组,使其仅是 .ZIP。但它告诉我错误
the same variable cannot be used for more than 1 control.
但我没有使用它两次。所以我的策略一定是错误的。
Gui, Add, Text, x15 y+50, Downloads Folder | Extension Filters:
Gui, Add, Checkbox, x+20 vFileType gFileFilter1, ZIP ;Checkbox for filetype filter
Gui, Font, cBlack s9
FileFilter1:
Gui, Add, ListBox, x15 vMyListBox gMyListBox w240 r5
Gui, Add, Button, Default, OK
Gui, submit, nohide
Downloads:= "C:\Users\me\Downloads\"
if (FileType=1)
{
download_filters:= "*.ZIP"
}
else
{
download_filters:= "*.*"
}
msgbox % Downloads download_filters
; Loops files, applies a sort, sticks results in gui listbox.
FileList :=
Loop files, % Downloads download_filters
{
FileList .= A_LoopFileTimeModified "," A_LoopFileName . "|"
}
Sort, FileList, R D| ; Sort, reverse order. Use '|' as the Delimiter.
NewFileList .= RegExReplace(FileList,"[0-9]{14},","")
GuiControl,, MyListBox, %NewFileList%
Gui, Show, w525 h500, AHK Super GUI
return
MyListBox:
if (A_GuiEvent != "DoubleClick")
return
每次我调用“FileFilter1:”时,它都会尝试添加另一个“ListBox”控件,而不是修改原始控件;将 gui 内容移到标签之外以避免这种情况。第二;要更新列表框(而不是添加到数组),您需要以
"|" VariableName
开头,因此更新列表框的整行将是: GuiControl ,,MyList,% "|" NewList
Gui Add,Text,x15 y+50,Downloads Folder | Extension Filters:
Gui Add,Checkbox,x+20 vFileType gFileFilterSub,ZIP
Gui Font,cBlack s9
Gui Add,ListBox,x15 vMyList gMyListBox w240 r5
Gui Add,Button,Default,OK
Gui Submit,NoHide
Downloads:="C:\Users\" A_UserName "\Downloads\"
FileFilterSub:
Gui Submit,NoHide ;'Submit' to get the checkbox value first
If (FileType=1)
FileFilter:="*.ZIP"
Else
FileFilter:="*.*"
FileList:=""
Loop Files,% Downloads FileFilter
FileList.=A_LoopFileTimeModified "," A_LoopFileName "|"
Sort FileList,R D|
NewList:=RegExReplace(FileList,"[0-9]{14},","")
GuiControl ,,MyList,% "|" NewList ;Start with '|' to overwrite!
Gui Show,w525 h500,AHK Super GUI
Return
MyListBox:
If (A_GuiEvent!="DoubleClick")
Return