VB.Net/GUI/SDI

Материал из VB Эксперт
Перейти к: навигация, поиск

Open File Menu List for SDI Frame

<source lang="vbnet"> Imports System Imports System.Runtime.InteropServices Imports System.Drawing Imports System.ruponentModel Imports System.Windows.Forms Imports System.IO Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim myform As Form = New Form1()
       Application.Run(myform)
   End Sub

End Class

Public Class OpenFileList

   Private m_ApplicationName As String
   Private m_FileMenu As ToolStripMenuItem
   Private m_NumEntries As Integer
   Private m_FileNames As Collection
   Private m_MenuItems As Collection
   Public Event OpenFile(ByVal file_name As String)
   Public Sub New(ByVal application_name As String, ByVal file_menu As ToolStripMenuItem, ByVal num_entries As Integer)
       m_ApplicationName = application_name
       m_FileMenu = file_menu
       m_NumEntries = num_entries
       m_FileNames = New Collection
       m_MenuItems = New Collection
       LoadOpenFileList()
       DisplayOpenFileList()
   End Sub
   Private Sub LoadOpenFileList()
       Dim file_name As String
       For i As Integer = 1 To m_NumEntries
           file_name = GetSetting(m_ApplicationName,"OpenFileList", "FileName" & i, "")
           If file_name.Length > 0 Then
               m_FileNames.Add(file_name, file_name)
           End If
       Next i
   End Sub
   Private Sub SaveOpenFileList()
       " Remove previous entries.
       If GetSetting(m_ApplicationName, "OpenFileList","FileName1", "").Length > 0 Then
           DeleteSetting(m_ApplicationName, "OpenFileList")
       End If
       For i As Integer = 1 To m_FileNames.Count
           SaveSetting(m_ApplicationName,"OpenFileList", "FileName" & i, _
               m_FileNames(i).ToString)
       Next i
   End Sub
   Private Sub DisplayOpenFileList()
       For Each mnu As ToolStripItem In m_MenuItems
           m_FileMenu.DropDownItems.Remove(mnu)
       Next mnu
       m_MenuItems = New Collection
       If m_FileNames.Count > 0 Then
           Dim sep As New ToolStripSeparator()
           m_MenuItems.Add(sep)
           m_FileMenu.DropDownItems.Add(sep)
           Dim mnu As ToolStripMenuItem
           For i As Integer = 1 To m_FileNames.Count
               mnu = New ToolStripMenuItem()
               mnu.Text = "&" & i & " " & _
                   New FileInfo(m_FileNames(i).ToString).Name
               AddHandler mnu.Click, AddressOf MruItem_Click
               m_MenuItems.Add(mnu)
               m_FileMenu.DropDownItems.Add(mnu)
           Next i
       End If
   End Sub
   Private Sub MruItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
       Dim mnu As ToolStripMenuItem
       mnu = DirectCast(sender, ToolStripMenuItem)
       For i As Integer = 1 To m_FileNames.Count
           If m_MenuItems(i + 1) Is mnu Then
               RaiseEvent OpenFile(m_FileNames(i).ToString)
               Exit For
           End If
       Next i
   End Sub
   Public Sub Add(ByVal file_name As String)
       Dim i As Integer = FileNameIndex(file_name)
       If i > 0 Then m_FileNames.Remove(i)
       If m_FileNames.Count > 0 Then
           m_FileNames.Add(file_name, file_name, m_FileNames.Item(1))
       Else
           m_FileNames.Add(file_name, file_name)
       End If
       If m_FileNames.Count > m_NumEntries Then
           m_FileNames.Remove(m_NumEntries + 1)
       End If
       DisplayOpenFileList()
       SaveOpenFileList()
   End Sub
   Private Function FileNameIndex(ByVal file_name As String) As Integer
       For i As Integer = 1 To m_FileNames.Count
           If m_FileNames(i).ToString = file_name Then Return i
       Next i
       Return 0
   End Function
   Public Sub Remove(ByVal file_name As String)
       Dim i As Integer = FileNameIndex(file_name)
       If i > 0 Then
           m_FileNames.Remove(i)
           DisplayOpenFileList()
           SaveOpenFileList()
       End If
   End Sub

End Class Public Class Form1

   Private WithEvents m_OpenFileList As OpenFileList
   Private Sub Form1_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles Me.Load
       m_OpenFileList = New OpenFileList("OpenFileList", mnuFile, 4)
   End Sub
   Private Sub mnuFileOpen_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles mnuFileOpen.Click
       If dlgOpen.ShowDialog() = Windows.Forms.DialogResult.OK Then
           OpenFile(dlgOpen.FileName)
       End If
   End Sub
   Private Sub m_OpenFileList_OpenFile(ByVal file_name As String) _
    Handles m_OpenFileList.OpenFile
       OpenFile(file_name)
   End Sub
   Private Sub OpenFile(ByVal file_name As String)
       txtContents.Text = File.ReadAllText(file_name)
       txtContents.Select(0, 0)
       m_OpenFileList.Add(file_name)
       Me.Text = "# [" & New FileInfo(file_name).Name & "]"
   End Sub

End Class

<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Public Class Form1

   Inherits System.Windows.Forms.Form
   "Form overrides dispose to clean up the component list.
   <System.Diagnostics.DebuggerNonUserCode()> _
   Protected Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing AndAlso components IsNot Nothing Then
           components.Dispose()
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "NOTE: The following procedure is required by the Windows Form Designer
   "It can be modified using the Windows Form Designer.  
   "Do not modify it using the code editor.
   <System.Diagnostics.DebuggerStepThrough()> _
   Private Sub InitializeComponent()
       Me.MenuStrip1 = New System.Windows.Forms.MenuStrip
       Me.mnuFile = New System.Windows.Forms.ToolStripMenuItem
       Me.mnuFileOpen = New System.Windows.Forms.ToolStripMenuItem
       Me.txtContents = New System.Windows.Forms.TextBox
       Me.dlgOpen = New System.Windows.Forms.OpenFileDialog
       Me.MenuStrip1.SuspendLayout()
       Me.SuspendLayout()
       "
       "MenuStrip1
       "
       Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuFile})
       Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
       Me.MenuStrip1.Name = "MenuStrip1"
       Me.MenuStrip1.Size = New System.Drawing.Size(292, 24)
       Me.MenuStrip1.TabIndex = 9
       Me.MenuStrip1.Text = "MenuStrip1"
       "
       "mnuFile
       "
       Me.mnuFile.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuFileOpen})
       Me.mnuFile.Name = "mnuFile"
       Me.mnuFile.Size = New System.Drawing.Size(44, 20)
       Me.mnuFile.Text = "&File"
       "
       "mnuFileOpen
       "
       Me.mnuFileOpen.Name = "mnuFileOpen"
       Me.mnuFileOpen.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys)
       Me.mnuFileOpen.Size = New System.Drawing.Size(168, 22)
       Me.mnuFileOpen.Text = "&Open"
       "
       "txtContents
       "
       Me.txtContents.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                   Or System.Windows.Forms.AnchorStyles.Left) _
                   Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.txtContents.Location = New System.Drawing.Point(0, 24)
       Me.txtContents.Multiline = True
       Me.txtContents.Name = "txtContents"
       Me.txtContents.Size = New System.Drawing.Size(292, 249)
       Me.txtContents.TabIndex = 8
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(292, 273)
       Me.Controls.Add(Me.txtContents)
       Me.Controls.Add(Me.MenuStrip1)
       Me.Name = "Form1"
       Me.Text = "SdiEditMRU []"
       Me.MenuStrip1.ResumeLayout(False)
       Me.MenuStrip1.PerformLayout()
       Me.ResumeLayout(False)
       Me.PerformLayout()
   End Sub
   Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
   Friend WithEvents mnuFile As System.Windows.Forms.ToolStripMenuItem
   Friend WithEvents mnuFileOpen As System.Windows.Forms.ToolStripMenuItem
   Friend WithEvents txtContents As System.Windows.Forms.TextBox
   Friend WithEvents dlgOpen As System.Windows.Forms.OpenFileDialog

End Class

      </source>


Single Document Interface (SDI) Demo

<source lang="vbnet"> Imports System Imports System.Runtime.InteropServices Imports System.Drawing Imports System.ruponentModel Imports System.Windows.Forms Imports System.IO Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim myform As Form = New Form1()
       Application.Run(myform)
   End Sub

End Class

Public Class Form1

   Private m_FileLoaded As Boolean = False
   Private Sub mnuOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuOpen.Click
       If dlgOpen.ShowDialog() = Windows.Forms.DialogResult.OK Then
           Dim frm As Form1
           If m_FileLoaded Then
               frm = New Form1
           Else
               frm = Me
           End If
           frm.txtContents.Text = File.ReadAllText(dlgOpen.FileName)
           frm.Text = "# [" & New FileInfo(dlgOpen.FileName).Name & "]"
           frm.m_FileLoaded = True
           frm.Show()
       End If
   End Sub

End Class

<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Public Class Form1

   Inherits System.Windows.Forms.Form
   "Form overrides dispose to clean up the component list.
   <System.Diagnostics.DebuggerNonUserCode()> _
   Protected Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing AndAlso components IsNot Nothing Then
           components.Dispose()
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "NOTE: The following procedure is required by the Windows Form Designer
   "It can be modified using the Windows Form Designer.  
   "Do not modify it using the code editor.
   <System.Diagnostics.DebuggerStepThrough()> _
   Private Sub InitializeComponent()
       Me.MenuStrip1 = New System.Windows.Forms.MenuStrip
       Me.FileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem
       Me.mnuOpen = New System.Windows.Forms.ToolStripMenuItem
       Me.dlgOpen = New System.Windows.Forms.OpenFileDialog
       Me.txtContents = New System.Windows.Forms.TextBox
       Me.MenuStrip1.SuspendLayout()
       Me.SuspendLayout()
       "
       "MenuStrip1
       "
       Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.FileToolStripMenuItem})
       Me.MenuStrip1.Location = New System.Drawing.Point(0, 0)
       Me.MenuStrip1.Name = "MenuStrip1"
       Me.MenuStrip1.Size = New System.Drawing.Size(292, 24)
       Me.MenuStrip1.TabIndex = 9
       Me.MenuStrip1.Text = "MenuStrip1"
       "
       "FileToolStripMenuItem
       "
       Me.FileToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mnuOpen})
       Me.FileToolStripMenuItem.Name = "FileToolStripMenuItem"
       Me.FileToolStripMenuItem.Size = New System.Drawing.Size(44, 20)
       Me.FileToolStripMenuItem.Text = "&File"
       "
       "mnuOpen
       "
       Me.mnuOpen.Name = "mnuOpen"
       Me.mnuOpen.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.O), System.Windows.Forms.Keys)
       Me.mnuOpen.Size = New System.Drawing.Size(168, 22)
       Me.mnuOpen.Text = "&Open"
       "
       "txtContents
       "
       Me.txtContents.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                   Or System.Windows.Forms.AnchorStyles.Left) _
                   Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
       Me.txtContents.Location = New System.Drawing.Point(0, 24)
       Me.txtContents.Multiline = True
       Me.txtContents.Name = "txtContents"
       Me.txtContents.Size = New System.Drawing.Size(292, 249)
       Me.txtContents.TabIndex = 8
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(292, 273)
       Me.Controls.Add(Me.txtContents)
       Me.Controls.Add(Me.MenuStrip1)
       Me.Name = "Form1"
       Me.Text = "SdiEdit []"
       Me.MenuStrip1.ResumeLayout(False)
       Me.MenuStrip1.PerformLayout()
       Me.ResumeLayout(False)
       Me.PerformLayout()
   End Sub
   Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip
   Friend WithEvents FileToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem
   Friend WithEvents mnuOpen As System.Windows.Forms.ToolStripMenuItem
   Friend WithEvents dlgOpen As System.Windows.Forms.OpenFileDialog
   Friend WithEvents txtContents As System.Windows.Forms.TextBox

End Class

      </source>