Author:水如烟  

参考应用类代码辅助类代码

现在尝试做一个通用的主窗体.所谓通用,按我的理解,是尽可能的把常用功能实现在一个类上,应用时仅考虑实际需求.

因为是尝试,所以这部分代码我就不贴上来了,现在只说表现.

主窗体一般的表现有两种,一是MDI,一是象IDE那种形式.我就将这两种集合在一起.

使用时,简单的代码就可以实现如下的效果.

代码:

Public Class MainForm
    
Inherits LzmTW.uSystem.uWindows.uForms.uMainForm.MainForm

    
'实现特定菜单加载
    Protected Overrides Sub MenuManagerRead()
        
If Not IO.File.Exists(Me.MenuManager.FileName) Then
            
Me.MenuManager.GetDefault() '默认菜单
            Me.MenuManager.SaveFile()
        
Else
            
Me.MenuManager.ReadFile()
        
End If
    
End Sub
End Class

效果:

WinForm设计之主窗体

 切换到MDI模式:

WinForm设计之主窗体

或者用代码指定为MDI模式:

    Private Shadows Sub MainForm_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
        
Dim mToolStripMenuItem As ToolStripMenuItem = CType(Me.MenuManager.FindToolStripItem("HideWorkspace"), ToolStripMenuItem)
        
If mToolStripMenuItem IsNot Nothing Then
            mToolStripMenuItem.PerformClick()
            mToolStripMenuItem.Enabled 
= False
        
End If
    
End Sub

效果:

WinForm设计之主窗体

做一个简单的功能实现:

 


Friend Class OpenTxtFileService
    
Private gMainForm As LzmTW.uSystem.uWindows.uForms.uMainForm.MainForm
    
Sub New()
        gMainForm 
= CType(My.Application.ApplicationContext.MainForm, LzmTW.uSystem.uWindows.uForms.uMainForm.MainForm)
        Initialize()
    
End Sub

    
Private Sub Initialize()
        
With gMainForm.WorkSpace.AddControlTo(LzmTW.uSystem.uWindows.uForms.MainFormSplitContainer.Panels.Center, New RichTextBox)
            .Name 
= "Rich"
            .Dock 
= DockStyle.Fill
        
End With


  

        
'绑定主窗体[打开]菜单项单击事件
        gMainForm.MenuManager.AddActionHandler("Open""Click""OnOpenClick"Me)

        
'单击事件也可以这样绑定
        'gMainForm.MenuManager.AddClickHandler("Open", AddressOf OnOpenClick)

    
End Sub

    
Private Sub OnOpenClick(ByVal sender As ObjectByVal e As EventArgs)
        
Dim f As New OpenFileDialog
        
Using f
            f.Filter 
= "txt|*.txt"
            f.Multiselect 
= False

            
If f.ShowDialog = DialogResult.OK Then
                
Dim mRich As RichTextBox = CType(gMainForm.WorkSpace.FindControl(LzmTW.uSystem.uWindows.uForms.MainFormSplitContainer.Panels.Center, "Rich"), RichTextBox)
                mRich.LoadFile(IO.File.Open(f.FileName, IO.FileMode.Open), RichTextBoxStreamType.PlainText)
                gMainForm.SendMessage(f.FileName)
            
End If
        
End Using
    
End Sub
End Class

主窗体Load代码改为:

    Private Shadows Sub MainForm_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
        
Dim mOpenTxtFileService As New OpenTxtFileService
    
End Sub

效果:

WinForm设计之主窗体

主窗体本身已含插件功能,所以可以通过插件实现功能.

相关文章: