• 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

    • Why are you completely changing the visual identity of all software here for something else at a whim??? Wtf???
    • My Pixel 7 got the update this morning and it's been freezing constantly. I tracked the issue to Nova Launcher. Once I removed the app, everything is working just fine. There hasn't been an update to Nova in a long time so maybe this is just writing on the wall to move on.
    • Google begins rollout of Android 16 with several new features by Pradeep Viswanathan Today, Google announced the rollout of Android 16, the latest major update to the Android operating system. Android 16 is now being released to all supported Google Pixel smartphones, with availability expanding to other OEM Android devices later this year. Unlike the recently announced iOS 26, which features a revamped Liquid Glass design, Android 16 introduces Google’s new Material 3 Expressive design. Google says that more Material 3 Expressive design elements will be added to Android 16 devices later this year. Android 16 also brings a number of useful features aimed at improving everyday experiences. Read about them below. Similar to iOS Live Activities, Android 16 introduces live updates that display real-time information from ride-share and food delivery apps directly on the lock screen. This feature will also be supported by Samsung’s Now Bar, as well as OPPO and OnePlus’ Live Alerts. Android 16 will automatically group notifications from the same app. For example, 20 separate messages from different WhatsApp contacts will appear as a single notification entry. The update includes improvements for users with hearing aids. Users can now switch to using their phone’s microphone for clearer calls in noisy environments. Additionally, a new native control for hearing devices will provide easier access within Android 16. With Android 16, the Advanced Protection feature can be activated with a single tap, offering enhanced security against sophisticated attacks. Google collaborated closely with Samsung to bring desktop windowing to Android 16. A DeX-like experience will soon be available across the Android ecosystem, allowing users to move and resize multiple app windows on a single screen. This feature will roll out later this year on compatible devices, and developers can begin testing it today. Later this year, Google will introduce support for custom keyboard shortcuts, enabling users to create their own combinations of hotkeys. Android 16 also includes smaller enhancements such as HDR screenshots, adaptive refresh rate, improved identity verification, and more. Today, Google also announced several exclusive features for Pixel devices with a snazzy video (above); you can read about all those features here.
    • Sorry for having to do sponsored deals in order to keep the lights on. Our Stackcommerce partner determines the deals we publish (I do not choose them myself) but I suppose what people don't see or worry about doesn't affect them. If a tiny percentage of these articles (1 Neowin Deal a day) affects you this much, then I am sorry. We're not the only news site to have to do this btw others have to as well
  • Recent Achievements

    • Reacting Well
      rshit earned a badge
      Reacting Well
    • Reacting Well
      Alan- earned a badge
      Reacting Well
    • Week One Done
      IAMFLUXX earned a badge
      Week One Done
    • One Month Later
      Æhund earned a badge
      One Month Later
    • One Month Later
      CoolRaoul earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      532
    2. 2
      ATLien_0
      267
    3. 3
      +FloatingFatMan
      205
    4. 4
      +Edouard
      204
    5. 5
      snowy owl
      140
  • Tell a friend

    Love Neowin? Tell a friend!