[Library][VB.NET].NET簡易測試用表單類別

.NET簡易測試用表單類別

Introduction

在撰寫程式時,我們時常會需要撰寫一些測試程式、或是需要顯示一些資料。多半這時我們會設計一些測試用的表單介面來使用。這些介面多半是很簡單的介面,設計上也大同小異,所以我們可以把這些表單介面整理起來方便以後重覆使用。

本篇介紹簡易測試用表單類別的寫法。這些表單具備任意組合使用的能力。

 

測試用表單類別

測試用表單類別的Code如下:

#Region "Imports"
Imports System.Windows.Forms
Imports System.Drawing
#End Region
 
 
'|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'Author: Larry Nung
'Date: 2009/5/13
'File: 
'Memo: 
'|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
''' <summary>
''' 
''' </summary>
''' <remarks></remarks>
Friend Class TestForm
 
 
#Region "Public Shared Method"
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/14
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="dataSource"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowGridDlg(ByVal dataSource As DataTable) As DialogResult
        Return ShowGridDlg(String.Empty, dataSource)
    End Function
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/14
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="title"></param>
    ''' <param name="dataSource"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowGridDlg(ByVal title As String, ByVal dataSource As DataTable) As DialogResult
        Dim grid As New DataGridView
        Dim btnOk As New Button
 
        With grid
            .DataSource = dataSource
            .Dock = DockStyle.Fill
        End With
 
        With btnOk
            .Text = "OK"
            .Dock = DockStyle.Bottom
            .DialogResult = Windows.Forms.DialogResult.OK
        End With
 
 
        Return ShowForm(title, grid, btnOk)
    End Function
 
 
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/14
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="items"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowListDlg(ByVal items As ICollection) As DialogResult
        Return ShowListDlg(String.Empty, items)
    End Function
 
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/14
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="title"></param>
    ''' <param name="items"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowListDlg(ByVal title As String, ByVal items As ICollection) As DialogResult
        Dim lstbox As New ListBox
 
        With lstbox
            .BeginUpdate()
            .SelectionMode = SelectionMode.None
            For Each item In items
                .Items.Add(item)
            Next
            .Dock = DockStyle.Fill
            .EndUpdate()
        End With
 
        Return ShowForm(title, lstbox)
    End Function
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/13
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="obj"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowPropertySettingDlg(ByVal obj As Object) As DialogResult
        Return ShowPropertySettingDlg(obj.ToString, obj)
    End Function
 
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/13
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="title"></param>
    ''' <param name="obj"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowPropertySettingDlg(ByVal title As String, ByVal obj As Object) As DialogResult
        Dim prop As New PropertyGrid
        Dim btnOk As New Button
 
        With prop
            .SelectedObject = obj
            .Dock = DockStyle.Fill
        End With
 
        With btnOk
            .Text = "OK"
            .Dock = DockStyle.Bottom
            .DialogResult = Windows.Forms.DialogResult.OK
        End With
 
        Return ShowForm(title, prop, btnOk)
    End Function
 
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/13
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="items"></param>
    ''' <param name="selectedIdx"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowListSelectDlg(ByVal items As ICollection, ByRef selectedIdx As Integer) As DialogResult
        Return ShowListSelectDlg(String.Empty, items, selectedIdx)
    End Function
 
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/13
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="title"></param>
    ''' <param name="items"></param>
    ''' <param name="selectedIdx"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowListSelectDlg(ByVal title As String, ByVal items As ICollection, ByRef selectedIdx As Integer) As DialogResult
        Return ShowListSelectDlg(title, items, Nothing, selectedIdx)
    End Function
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/13
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="items"></param>
    ''' <param name="selectedItem"></param>
    ''' <param name="selectedIdx"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowListSelectDlg(ByVal items As ICollection, Optional ByRef selectedItem As Object = Nothing, Optional ByRef selectedIdx As Integer = -1) As DialogResult
        Return ShowListSelectDlg(String.Empty, items, selectedItem, selectedIdx)
    End Function
 
 
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/14
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="title"></param>
    ''' <param name="items"></param>
    ''' <param name="selectedItem"></param>
    ''' <param name="selectedIdx"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowListSelectDlg(ByVal title As String, ByVal items As ICollection, Optional ByRef selectedItem As Object = Nothing, Optional ByRef selectedIdx As Integer = -1) As DialogResult
        Dim lstbox As New ListBox
        Dim btnOk As New Button
        Dim btnCancel As New Button
 
        With lstbox
            .BeginUpdate()
            .SelectionMode = SelectionMode.One
            For Each item In items
                .Items.Add(item)
            Next
            .SelectedIndex = 0
            .Dock = DockStyle.Fill
            .EndUpdate()
        End With
        AddHandler lstbox.DoubleClick, Function(sender As Object, e As EventArgs) CallByName(btnOk, "PerformClick", CallType.Method, Nothing)
 
 
        With btnOk
            .Text = "OK"
            .Dock = DockStyle.Bottom
            .DialogResult = Windows.Forms.DialogResult.OK
        End With
 
 
        With btnCancel
            .Text = "Cancel"
            .Dock = DockStyle.Bottom
            .DialogResult = Windows.Forms.DialogResult.Cancel
        End With
 
        ShowListSelectDlg = ShowForm(title, lstbox, btnOk, btnCancel)
 
        With lstbox
            selectedItem = .SelectedItem
            selectedIdx = .SelectedIndex
        End With
    End Function
 
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/14
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="file"></param>
    ''' <remarks></remarks>
    Public Shared Sub ShowChart(ByVal file As String)
        ShowChart(String.Empty, file)
    End Sub
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/14
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="title"></param>
    ''' <param name="file"></param>
    ''' <remarks></remarks>
    Public Shared Sub ShowChart(ByVal title As String, ByVal file As String)
        ShowChart(title, New Bitmap(file))
    End Sub
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/12
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="chart"></param>
    ''' <remarks></remarks>
    Public Shared Sub ShowChart(ByVal chart As Image)
        ShowChart(String.Empty, chart)
    End Sub
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/12
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="title"></param>
    ''' <param name="chart"></param>
    ''' <remarks></remarks>
    Public Shared Sub ShowChart(ByVal title As String, ByVal chart As Image)
        Dim p As New PictureBox
        Dim btnOk As New Button
 
        With p
            .Image = chart
            .Dock = DockStyle.Fill
            .SizeMode = PictureBoxSizeMode.Zoom
        End With
 
        With btnOk
            .Text = "OK"
            .Dock = DockStyle.Bottom
            .DialogResult = Windows.Forms.DialogResult.OK
        End With
 
        ShowForm(title, p, btnOk)
    End Sub
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/12
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="msg"></param>
    ''' <remarks></remarks>
    Public Shared Sub ShowMsg(ByVal msg As String)
        ShowMsg(String.Empty, msg)
    End Sub
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/12
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="title"></param>
    ''' <param name="msg"></param>
    ''' <remarks></remarks>
    Public Shared Sub ShowMsg(ByVal title As String, ByVal msg As String)
        Dim tbx As New TextBox
        Dim btnOk As New Button
 
        With tbx
            .Multiline = True
            .Dock = DockStyle.Fill
            .ReadOnly = True
            .BackColor = Color.White
            .Text = msg
        End With
 
        With btnOk
            .Text = "OK"
            .Dock = DockStyle.Bottom
            .DialogResult = Windows.Forms.DialogResult.OK
        End With
 
        ShowForm(title, tbx)
    End Sub
 
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/12
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="controls"></param>
    ''' <remarks></remarks>
    Public Shared Function ShowForm(ByVal ParamArray controls() As Control) As DialogResult
        Return ShowForm(String.Empty, controls)
    End Function
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/13
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="width"></param>
    ''' <param name="height"></param>
    ''' <param name="controls"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowForm(ByVal width As Integer, ByVal height As Integer, ByVal ParamArray controls() As Control) As DialogResult
        Return ShowForm(String.Empty, width, height, controls)
    End Function
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/12
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="title"></param>
    ''' <param name="controls"></param>
    ''' <remarks></remarks>
    Public Shared Function ShowForm(ByVal title As String, ByVal ParamArray controls() As Control) As DialogResult
        Return ShowForm(title, 300, 300, controls)
    End Function
 
 
    '***************************************************************************
    'Author: Larry Nung
    'Date: 2009/5/13
    'Purpose: 
    'Memo: 
    '***************************************************************************
    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="title"></param>
    ''' <param name="width"></param>
    ''' <param name="height"></param>
    ''' <param name="controls"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function ShowForm(ByVal title As String, ByVal width As Integer, ByVal height As Integer, ByVal ParamArray controls() As Control) As DialogResult
        Dim f As New Form
        With f
            .SuspendLayout()
            .Width = width
            .Height = height
            .Text = title
            .Controls.AddRange(controls)
            .ResumeLayout()
            Return .ShowDialog()
        End With
    End Function
 
#End Region
 
End Class

 

測試用表單畫面

秀圖界面

image

 

訊息界面

image

 

清單界面

image

 

選取界面

image

 

屬性界面

image

 

表格界面

image

 

使用範例

image

 

使用範例如下:

Public Class Form1
 
    Private Sub btnShowPhoto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowPhoto.Click
        Dim openDlg As New OpenFileDialog
        openDlg.Filter = "Photo file|*.bmp;*.jpg"
        If openDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
            TestForm.ShowChart("Photo", openDlg.FileName)
        End If
    End Sub
 
    Private Sub btnShowFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowFile.Click
        Dim openDlg As New OpenFileDialog
        openDlg.Filter = "Text file|*.txt"
        If openDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
            TestForm.ShowMsg("Text", My.Computer.FileSystem.ReadAllText(openDlg.FileName))
        End If
    End Sub
 
    Private Sub btnShowFileContent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowFileContent.Click
        Dim selectedItem As Object = Nothing
        Dim folderDlg As New FolderBrowserDialog
        If folderDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
            If TestForm.ShowListSelectDlg("Select File", My.Computer.FileSystem.GetFiles(folderDlg.SelectedPath, FileIO.SearchOption.SearchTopLevelOnly, "*.txt"), selectedItem) = Windows.Forms.DialogResult.OK Then
                TestForm.ShowMsg(My.Computer.FileSystem.ReadAllText(selectedItem.ToString))
            End If
        End If
    End Sub
 
    Private Sub btnSetProperty_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetProperty.Click
        TestForm.ShowPropertySettingDlg(Me)
    End Sub
 
    Private Sub btnShowFileList_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowFileList.Click
        Dim folderDlg As New FolderBrowserDialog
        If folderDlg.ShowDialog = Windows.Forms.DialogResult.OK Then
            TestForm.ShowListDlg(My.Computer.FileSystem.GetFiles(folderDlg.SelectedPath))
        End If
    End Sub
 
    Private Sub btnShowGrid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShowGrid.Click
        Dim dt As New DataTable
        dt.Columns.Add()
        TestForm.ShowGridDlg(dt)
    End Sub
End Class