Author:
水如烟
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 Object , ByVal 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
现在尝试做一个通用的主窗体.所谓通用,按我的理解,是尽可能的把常用功能实现在一个类上,应用时仅考虑实际需求.
因为是尝试,所以这部分代码我就不贴上来了,现在只说表现.
主窗体一般的表现有两种,一是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
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
效果:
切换到MDI模式:
或者用代码指定为MDI模式:
Private
Shadows
Sub
MainForm_Load(
ByVal
sender
As
Object
,
ByVal
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
Dim mToolStripMenuItem As ToolStripMenuItem = CType ( Me .MenuManager.FindToolStripItem( " HideWorkspace " ), ToolStripMenuItem)
If mToolStripMenuItem IsNot Nothing Then
mToolStripMenuItem.PerformClick()
mToolStripMenuItem.Enabled = False
End If
End Sub
效果:
做一个简单的功能实现:
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 Object , ByVal 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
Object
,
ByVal
e
As
System.EventArgs)
Handles
Me
.Load
Dim mOpenTxtFileService As New OpenTxtFileService
End Sub
Dim mOpenTxtFileService As New OpenTxtFileService
End Sub
效果:
主窗体本身已含插件功能,所以可以通过插件实现功能.