• 0

[.NET] Multi-Panel Application?


Question

Hi,

I've made a simple application in VB.NET that switches between two different panels, but I'm not sure if it's the most efficient way to do it. Please see the below code and compile the file and let me know if there's any better way to do it. Thanks!

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.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.
    Friend WithEvents Panel1 As System.Windows.Forms.Panel
    Friend WithEvents Label1 As System.Windows.Forms.Label
    Friend WithEvents Panel2 As System.Windows.Forms.Panel
    Friend WithEvents Label2 As System.Windows.Forms.Label
    Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu
    Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem
    Friend WithEvents MenuItem2 As System.Windows.Forms.MenuItem
    Friend WithEvents MenuItem3 As System.Windows.Forms.MenuItem
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.Panel1 = New System.Windows.Forms.Panel
        Me.Label1 = New System.Windows.Forms.Label
        Me.Panel2 = New System.Windows.Forms.Panel
        Me.Label2 = New System.Windows.Forms.Label
        Me.MainMenu1 = New System.Windows.Forms.MainMenu
        Me.MenuItem1 = New System.Windows.Forms.MenuItem
        Me.MenuItem2 = New System.Windows.Forms.MenuItem
        Me.MenuItem3 = New System.Windows.Forms.MenuItem
        Me.Panel1.SuspendLayout()
        Me.Panel2.SuspendLayout()
        Me.SuspendLayout()
        '
        'Panel1
        '
        Me.Panel1.BackColor = System.Drawing.SystemColors.ActiveCaption
        Me.Panel1.Controls.Add(Me.Label1)
        Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill
        Me.Panel1.Location = New System.Drawing.Point(0, 0)
        Me.Panel1.Name = "Panel1"
        Me.Panel1.Size = New System.Drawing.Size(292, 271)
        Me.Panel1.TabIndex = 0
        '
        'Label1
        '
        Me.Label1.Font = New System.Drawing.Font("Verdana25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label1.Location = New System.Drawing.Point(96, 88)
        Me.Label1.Name = "Label1"
        Me.Label1.TabIndex = 0
        Me.Label1.Text = "This Is Panel 1"
        Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
        '
        'Panel2
        '
        Me.Panel2.BackColor = System.Drawing.SystemColors.Info
        Me.Panel2.Controls.Add(Me.Label2)
        Me.Panel2.Dock = System.Windows.Forms.DockStyle.Fill
        Me.Panel2.Location = New System.Drawing.Point(0, 0)
        Me.Panel2.Name = "Panel2"
        Me.Panel2.Size = New System.Drawing.Size(292, 271)
        Me.Panel2.TabIndex = 1
        '
        'Label2
        '
        Me.Label2.Font = New System.Drawing.Font("Verdana25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label2.Location = New System.Drawing.Point(32, 48)
        Me.Label2.Name = "Label2"
        Me.Label2.TabIndex = 1
        Me.Label2.Text = "This Is Panel 2"
        Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
        '
        'MainMenu1
        '
        Me.MainMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem1})
        '
        'MenuItem1
        '
        Me.MenuItem1.Index = 0
        Me.MenuItem1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem2, Me.MenuItem3})
        Me.MenuItem1.Text = "Change Panel"
        '
        'MenuItem2
        '
        Me.MenuItem2.Index = 0
        Me.MenuItem2.Text = "Panel 1"
        '
        'MenuItem3
        '
        Me.MenuItem3.Index = 1
        Me.MenuItem3.Text = "Panel 2"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 271)
        Me.Controls.Add(Me.Panel1)
        Me.Controls.Add(Me.Panel2)
        Me.Menu = Me.MainMenu1
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.Panel1.ResumeLayout(False)
        Me.Panel2.ResumeLayout(False)
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
        Panel1.Visible = True
        Panel2.Visible = False
    End Sub

    Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
        Panel1.Visible = False
        Panel2.Visible = True
    End Sub
End Class

Once again, thanks in advance!

Link to comment
https://www.neowin.net/forum/topic/379148-net-multi-panel-application/
Share on other sites

9 answers to this question

Recommended Posts

  • 0

If the panels appear one over the other (that is, they have the same size and location) then you should consider changing their zorder... like this:

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
  Panel1.BringToFront()
End Sub

Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click
  Panel2.BringToFront()
End Sub

  • 0
  bangbang023 said:
You could simply do a panel1.bringtofront() command. That should make things a little easier and cleaner if you start having many panels. I believe that command should still work.

586600388[/snapback]

Yeah either of those should work fine.

  • 0
  syko86 said:
Thanks for the replies =D. Is there any way to optimize it? I've an application that has 3 different panels and it takes up like 15MB of memory while running =(.

586600853[/snapback]

That's simply how .net works and while users will bitch and moan, it's nothing to worry about. The framework reserves memory for itself so it's readily accessible when needed, however, if another application requests any of that unused memory, the .net framework will immediately release it and let the other process use it.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • CapCut 6.5.0 (offline installer) by Razvan Serea CapCut is a versatile video editing app that offers a range of features such as multi-layer editing, keyframe animations, special effects, and more, to create professional-quality videos. With CapCut, users can edit and enhance their videos with a variety of tools such as filters, transitions, effects, and text overlays. CapCut's extensive library of pre-designed templates and visual effects also allows users to create unique and eye-catching videos in just a few clicks. Users can also adjust video speed, crop, and merge multiple clips, among other features. CapCut is available for both mobile devices and Windows, making it accessible for everyone. CapCut key features: User-friendly interface for easy video editing A wide range of editing tools, including trim, split, cut, and merge Music library with a wide range of tracks to choose from Customizable text and fonts to add captions and titles Multi-layer timeline for seamless editing and layering Filters and effects to enhance video quality and style A variety of transitions to choose from Multiple aspect ratio options for different platforms Green screen/chroma key for adding custom backgrounds Overlays and stickers to add to your videos Easy exporting to different video formats and resolutions Large library of pre-designed templates and visual effects Customizable video thumbnails for branding Keyframe animation to add movement to your video Speed adjustment for slow motion or time-lapse effects Customizable transitions between clips Reverse video playback for creative effects Voiceover recording and editing for narrating your video Color grading tools and much more... Download: CapCut 6.5.0 | 701.0 MB (Freeware) Links: CapCut Website | CapCut Screenshot | CapCut Online Editor Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Total Commander 11.55 by Razvan Serea Total Commander is a great two-pane file manager replacement for Windows, a program like Windows Explorer to copy, move, or delete files. It includes extra integrated applications like a built-in FTP client with FXP, a renaming tool, a disk space analyzer, a file synchronizer, can pack and unpack files, compare files by content, a quick view panel with bitmap display, HTTP proxy support and more. Total Commander 11 is compatible with Windows 95/98/ME/NT/2000/XP/Vista/7/8/8.1/10/11. Total Commander is distributed as shareware with a trial period of 30 days, but will continue to function, with a subscription reminder, after that. Total Commander features include: Two file windows side by side Multiple language and Unicode support Enhanced search function Compare files (now with editor) / synchronize directories Quick View panel with bitmap display ZIP, ARJ, LZH, RAR, UC2, TAR, GZ, CAB, ACE archive handling + plugins Built-in FTP client with FXP (server to server) and HTTP proxy support Parallel port link, multi-rename tool Tabbed interface, regular expressions, history+favorites buttons Thumbnails view, custom columns, enhanced search Compare editor, cursor in lister, separate trees, logging, enhanced overwrite dialog etc. Unicode names almost everywhere, long names (>259 characters), password manager for ftp and plugins, synchronize empty dirs, 64 bit context menu, quick file filter (Ctrl+S) USB port connection via special direct transfer cable, partial branch view (Ctrl+Shift+B), and many improvements to ftp, synchronizing and other functions And many more! Total Commander 11.55 release notes: This version mainly fixes bugs. Complete list of changes. New functions in Total Commander 11.55: Copying When "Copy to all selected folders/links..." is enabled, the "Keep relative paths" option is also respected Supports copying directories anywhere in subdirectories. For example, if "Only files of this type:" is set to "test\", the "test" folder will be found anywhere in the selected folders An overlay icon is displayed in the system tray when an overwrite confirmation dialog is open while Total Commander is not in the foreground When copying sparse files, only the parts containing non-zero data are copied. This option needs to be enabled via wincmd.ini [Configuration] CopySparseFiles=1 General Multi-rename tool: New placeholder [v] for inserting milliseconds, e.g. [hms].[v] Create/Verify Checksums: Use multiple threads for Blake3 checksums (64-bit only, on Windows 7 and newer) Use tc7z.dll as a fallback for unrar.dll if unrar.dll fails to load Rename directories in 7z archives when using the internal 7z packer New parameter for the internal MULTIRENAME command opens the tool and offers the user to undo the last operation Use external DLL tcsha64.dll to create/verify SHA3 checksums faster Download: Total Commander 11.55 | 10.6 MB (Shareware) View: Total Commander Website | Android | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • It should be the default browser behavior (apart from sending recorded audio to an external device)
    • "So if you are interested in this extension, for God's sake, do not try it in an office. Your coworkers will probably think you have finally lost it and are performing some bizarre humiliation ritual at your desk." If you install the plugin and start screaming at your system...you left being lost in the rear view.
    • Mullvad Browser 14.5.4 by Razvan Serea The Mullvad Browser is a privacy-focused web browser developed in a collaboration between Mullvad VPN and the Tor Project. It’s designed to minimize tracking and fingerprinting. You could say it’s a Tor Browser to use without the Tor Network. Instead, you can use it with a trustworthy VPN. The idea is to provide one more alternative – beside the Tor Network – to browse the internet with more privacy. To get as many people as possible to fight the big data gathering of today. To free the internet from mass surveillance. The Mullvad browser is free of charge, open source, and can be used without Mullvad VPN (although the combination is recommended). It is supported across platforms (Windows, MacOS, Linux). Privacy quality of the Tor Browser. To use with a VPN - Using a VPN is not enough to achieve perfect privacy online. There’s simply too much data being extracted through most browsers. The Mullvad Browser is a web browser with the privacy quality of the Tor Browser, to be used with a trustworthy VPN. Strong anti-fingerprinting from the Tor Project - The Tor Project has a proven track record of building a privacy-focused browser. The Mullvad Browser has the same fingerprinting protection as the Tor Browser – it just connects to the internet with (or without) a VPN instead of the Tor Network. No telemetry - Telemetry refers to unique data collected by the browser to enhance its performance. Mullvad does not support the collection of user data. Therefore, with the Mullvad Browser, all telemetry has been removed. Privacy first - Mullvad VPN has a proven record of putting privacy first. With no strange business models or short-term venture capitalist owners. The Tor Project is a non-profit organization fighting for human rights. Mullvad Browser 14.5.4 changelog: All Platforms Updated Firefox to 128.12.0esr Updated NoScript to 13.0.8 Bug 450: Rebase Mullvad Browser stable onto 128.12.0esr [mullvad-browser] Bug 43782: Add new UX flow for changing security level (Desktop) [tor-browser] Bug 43783: Tighten up the SecurityLevel module to enforce new UX flow [tor-browser] Bug 43784: Get confirmation from NoScript that settings are applied [tor-browser] Bug 43911: Backport security fixes from Firefox 140 [tor-browser] Build System / All Platforms Bug 41477: Update keyring/boklm.gpg for new subkeys (2025) [tor-browser-build] Bug 41498: Update keyring/morgan.gpg with updated public key [tor-browser-build] Download: Mullvad Browser 14.5 | 90.6 MB (Open Source) View: Mullvad Browser Homepage | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • First Post
      solidox earned a badge
      First Post
    • First Post
      BA the Curmudgeon earned a badge
      First Post
    • One Year In
      blissa jayden earned a badge
      One Year In
    • One Month Later
      blissa jayden earned a badge
      One Month Later
    • Week One Done
      blissa jayden earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      562
    2. 2
      ATLien_0
      213
    3. 3
      +FloatingFatMan
      171
    4. 4
      Michael Scrip
      153
    5. 5
      Som
      151
  • Tell a friend

    Love Neowin? Tell a friend!