vb.net完成最近文件列表功能,在菜单中添加最近的文件名

hzunit8045 2007-04-11 10:56:28
我想把我保存的文件名存入注册表中,等下次打开的时候先读注册表看看有没有文件名,有的话将文件名放在文件菜单中。菜单中最近的文件名能放4个。请教个位高手拉,我找到的资料是vb6.0的,在6.0中控件是可以有控件数组的,但是.net中已经不能了。我要怎么解决呢?
...全文
314 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzunit8045 2007-04-12
  • 打赏
  • 举报
回复
没有人会吗?
自己up一下!
hzunit8045 2007-04-11
  • 打赏
  • 举报
回复
Red_angelX(八戒)大哥,你的速度还真不是盖的!能不能说清楚一点呢?
hzunit8045 2007-04-11
  • 打赏
  • 举报
回复
附上vb6.0的完成最近文件列表功能模块
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Integer) As Integer
Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Integer, ByVal lpSubKey As String, ByVal Reserved As Integer, ByVal lpClass As String, ByVal dwOptions As Integer, ByVal samDesired As Integer, ByVal SecAtts As Integer, ByRef phkResult As Integer, ByRef lpdwDisp As Integer) As Integer
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Integer, ByVal lpValueName As String) As Integer
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Integer, ByVal lpSubKey As String, ByVal ulOptions As Integer, ByVal samDesired As Integer, ByRef phkResult As Integer) As Integer
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Integer, ByVal lpValueName As String, ByRef lpReserved As Integer, ByRef lpType As Integer, ByVal lpData As String, ByRef lpcbData As Integer) As Integer
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Integer, ByVal lpValueName As String, ByVal Reserved As Integer, ByVal dwType As Integer, ByVal lpData As String, ByVal cbData As Integer) As Integer

Private RFL$(1 To 4)
Private k%, M%, Rv&, P%, Q%
Private Buffer$, hKey&, PaFn$, TempFile$

Public Sub GetRecentFileList()

Rv = RegOpenKeyEx(HKEY_CURRENT_USER, "Software\CyberVision\" & Ttl & "\Rfl", 0, KEY_ALL_ACCESS, hKey)
If Rv = 0 Then
For k = 1 To 4
Buffer = Space(260)
RegQueryValueEx(hKey, CStr(k) & ".", 0, 1, Buffer, 260)
RFL(k) = Trim(Buffer)
RegDeleteValue(hKey, CStr(k) & ".")
Next
RegCloseKey(hKey)
Else
Exit Sub
End If

For k = 1 To 4
If RFL(k) <> "" Then
MDIForm1.MnuRecent(0).Visible = 1
Exit For
End If
Next

If MDIForm1.MnuRecent(0).Visible = 0 Then Exit Sub

For k = 1 To 4
If RFL(k) <> "" Then
M = M + 1
MDIForm1.MnuRecent(M).Visible = 1
MDIForm1.MnuRecent(M).Caption = RFL(k)
End If
Next

End Sub

Public Sub AddToRecentList(ByVal CurFile$)

MDIForm1.MnuRecent(0).Visible = 1

For k = 1 To 4
If MDIForm1.MnuRecent(k).Caption = CurFile Then
If k = 1 Then Exit Sub
For P = k To 1 Step -1
If P = 1 Then Exit For
MDIForm1.MnuRecent(P).Caption = MDIForm1.MnuRecent(P -1).Caption
Next
MDIForm1.MnuRecent(1).Caption = CurFile
Exit Sub
End If
Next

For k = 1 To 4
If MDIForm1.MnuRecent(k).Visible = 0 Then
MDIForm1.MnuRecent(k).Visible = 1
For P = k To 1 Step -1
If P = 1 Then Exit For
MDIForm1.MnuRecent(P).Caption = MDIForm1.MnuRecent(P - 1).Caption
Next
MDIForm1.MnuRecent(1).Caption = CurFile
Exit Sub
End If
Next

For k = 4 To 2 Step -1
MDIForm1.MnuRecent(k).Caption = MDIForm1.MnuRecent(k - 1).Caption
Next
MDIForm1.MnuRecent(1).Caption = CurFile

End Sub
Public Sub SaveRecentFileList()

Rv = RegCreateKeyEx(HKEY_CURRENT_USER, "Software\CyberVision\" & Ttl & "\Rfl", 0, vbNullString, 0, KEY_ALL_ACCESS, 0, hKey, 0)
If Rv = 0 Then
For k = 1 To 4
If MDIForm1.MnuRecent(k).Caption <> "" Then
PaFn = MDIForm1.MnuRecent(k).Caption
RegSetValueEx(hKey, CStr(k) & ".", 0, 1, PaFn, Len(PaFn))
End If
Next
RegCloseKey(hKey)
End If

End Sub
Public Function LoadRecentFile$(ByVal Idx%)

Q = 0

TempFile = MDIForm1.MnuRecent(Idx).Caption

On Error Resume Next
If Dir(TempFile) = "" Then
MsgBox("Unable to locate " & TempFile, vbExclamation, Ttl & " - Error")
MDIForm1.MnuRecent(Idx).Caption = ""
For k = 1 To 4
If MDIForm1.MnuRecent(k).Visible Then Q = Q + 1
Next
If Q > 1 Then
For k = 1 To Q - 1
If MDIForm1.MnuRecent(k).Caption = "" Then
MDIForm1.MnuRecent(k).Caption = MDIForm1.MnuRecent(k + 1).Caption
MDIForm1.MnuRecent(k + 1).Caption = ""
End If
Next
MDIForm1.MnuRecent(Q).Visible = 0
Else
MDIForm1.MnuRecent(0).Visible = 0
MDIForm1.MnuRecent(1).Visible = 0
End If
LoadRecentFile = ""
Else
LoadRecentFile = MDIForm1.MnuRecent(Idx).Caption
End If

End Function
Red_angelX 2007-04-11
  • 打赏
  • 举报
回复
动态添加控件数组 用法一样 只是要手工添加

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧