Aveva Marine VBNET 编程系列-修改程序快捷键
修改HullDesign程序的主题以及菜单项的快捷键
引用的dll文件
下面的是代码和快捷键配置文件:
https://files.cnblogs.com/files/NanShengBlogs/AMShortCut.HullDesign.zip?t=1695908179&download=true
Imports Aveva.ApplicationFramework.Presentation Imports Aveva.ApplicationFramework Imports System.IO Imports System.Reflection Imports System.Windows.Forms Imports System.Linq Public Class 控制程序界面 <MyAmFunctionAtt(NameOf(控制程序界面), NameOf(修改命令快捷键))> Sub 修改命令快捷键(wm As WindowManager) Dim cbm As CommandBarManager = CommandBarManager.Instance Dim mainMenus As CommandBar = cbm.MenuBar Dim btns As New List(Of ButtonToolImpl) cbm.AllowCustomization = True cbm.BeginUpdate() Dim item As ITool Try For Each item In mainMenus.Tools If TypeOf item Is MenuToolImpl Then btns.AddRange(GetButtonImpls(CType(item, MenuToolImpl))) End If Next Dim fi As New FileInfo(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "AMShortCut.HullDesign.csv")) If Not fi.Exists Then MsgBox("找不到快捷键配置文件:" & fi.FullName) Else Dim cmds As String() = File.ReadAllLines(fi.FullName) Dim i As Integer For i = 1 To cmds.Length - 1 Dim separator As String() = New String() {","} Dim cmdStrs As String() = cmds(i).Split(separator, StringSplitOptions.RemoveEmptyEntries) If (cmdStrs(1).ToLower = "true") Then Dim curCmd As ButtonToolImpl = btns.FirstOrDefault(Function(b) b.Key = cmdStrs.First()) If (curCmd IsNot Nothing) Then Dim shortcutStr = cmdStrs.Last().ToUpper() Dim targetShortCut As Shortcut = CType([Enum].Parse(GetType(Shortcut), shortcutStr, True), Shortcut) If (targetShortCut <> Shortcut.None) Then curCmd.Shortcut = targetShortCut curCmd.Visible = True Else wm.StatusBar.Text = shortcutStr End If End If End If Next i cbm.Style = CommandBarStyle.ScenicRibbon cbm.SaveLayout() cbm.EndUpdate(True) MsgBox("快捷键配置完成!") End If Catch ex As Exception MsgBox(ex.StackTrace) End Try End Sub Public Shared Function GetButtonImpls(ByVal mtl As MenuToolImpl) As List(Of ButtonToolImpl) Dim rtns As New List(Of ButtonToolImpl) Dim item As ITool For Each item In mtl.Tools If TypeOf item Is MenuToolImpl Then Dim btns As List(Of ButtonToolImpl) = GetButtonImpls(TryCast(item, MenuToolImpl)) If (btns.Count > 0) Then rtns.AddRange(btns) End If ElseIf TypeOf item Is ButtonToolImpl Then rtns.Add(TryCast(item, ButtonToolImpl)) End If Next Return rtns End Function End Class
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具