Solved

2 sliding panels

Posted on 2015-01-20
2
145 Views
Last Modified: 2015-01-20
I have 2 sliding panels. When I click 1 button its panel slides in - disables the other button from allowing the second panel to slide. And if you click the same button again it slides the panel back off screen and re enables the second panel button.
What I would like to do is when I click on a button if the other panel is visible then hide it the show its own panel
        private void btnSent_Click(object sender, EventArgs e)
        {
            if (btnInTransit.Enabled == true)
            {
                btnInTransit.Enabled = false;
            }
            else
            {
                btnInTransit.Enabled = true;
            }
            btnSent.Enabled = false;
            if (PanelLocation == 1)
            {
                panel2.Visible = true;
                //if showing - hide
                for (int i = 0; i < panel2.Width; i++)
                {
                    panel2.Location = new Point(746 + i, panel2.Location.Y);
                }
                PanelLocation = 0;
                panel2.Visible = false;
            }
            else
            {
                //if hidding - show
                panel2.Visible = true;
                for (int i = 0; i < panel2.Width; i++)
                {
                    panel2.Location = new Point(1017 - i, panel2.Location.Y);
                    panel2.Invalidate();
                }
                PanelLocation = 1;
            }
            btnSent.Enabled = true;
        }
        private void btnInTransit_Click(object sender, EventArgs e)
        {
            if (btnSent.Enabled == true)
            {
                btnSent.Enabled = false;
            }
            else
            {
                btnSent.Enabled = true;
            }
            btnInTransit.Enabled = false;
            if (PanelLocation == 1)
            {
                panel1.Visible = true;
                //if showing - hide
                for (int i = 0; i < panel1.Width; i++)
                {
                    panel1.Location = new Point(746 + i, panel1.Location.Y);
                }
                PanelLocation = 0;
                panel1.Visible = false;
            }
            else
            {
                //if hidding - show
                panel1.Visible = true;
                for (int i = 0; i < panel1.Width; i++)
                {
                    panel1.Location = new Point(1017 - i, panel1.Location.Y);
                    panel1.Invalidate();
                }
                PanelLocation = 1;
            }
            btnInTransit.Enabled = true;
        }

Open in new window

0
Comment
Question by:r3nder
2 Comments
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
Comment Utility
Assuming neither Panel is visible when you start:
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private enum PanelState
        {
            None, 
            Sent, 
            InTransit
        }

        private PanelState CurrentPanel = PanelState.None;

        private void btnSent_Click(object sender, EventArgs e)
        {
            switch(CurrentPanel)
            {
                case PanelState.InTransit:
                    ShowPanel(panel1, false); // InTransit panel is currently showing, hide it..
                    ShowPanel(panel2, true); // ...then show the Sent panel.
                    CurrentPanel = PanelState.Sent;
                    break;
                case PanelState.None:
                    ShowPanel(panel2, true); // Nothing currently displayed, just show the Sent panel
                    CurrentPanel = PanelState.Sent;
                    break;
                case PanelState.Sent:
                    ShowPanel(panel2, false); // Sent panel is currently showing, hide it.
                    CurrentPanel = PanelState.None;
                    break;
            }
        }

        private void btnInTransit_Click(object sender, EventArgs e)
        {
            switch (CurrentPanel)
            {
                case PanelState.Sent:
                    ShowPanel(panel2, false); // Sent panel is currently showing, hide it..
                    ShowPanel(panel1, true); // ...then show the InTransit panel.
                    CurrentPanel = PanelState.InTransit;
                    break;
                case PanelState.None:
                    ShowPanel(panel1, true); // Nothing currently displayed, just show the InTransit panel
                    CurrentPanel = PanelState.InTransit;
                    break;
                case PanelState.InTransit:
                    ShowPanel(panel1, false); // InTransit panel is currently showing, hide it.
                    CurrentPanel = PanelState.None;
                    break;
            }
        }

        private void ShowPanel(Panel pnl, bool Visible)
        {
            if (Visible)
            {
                // slide out to the left
                pnl.Visible = true;
                for (int i = 0; i < pnl.Width; i++)
                {
                    pnl.Location = new Point(1017 - i, pnl.Location.Y);
                    pnl.Invalidate();
                }
            }
            else
            {
                // slide in to the right
                for (int i = 0; i < pnl.Width; i++)
                {
                    pnl.Location = new Point(746 + i, pnl.Location.Y);
                    pnl.Invalidate();
                }
                pnl.Visible = false;
            }
        }

    }

Open in new window

0
 
LVL 6

Author Closing Comment

by:r3nder
Comment Utility
Awesome Mike thank you very much!
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

A short article about a problem I had getting the GPS LocationListener working.
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
An introduction to basic programming syntax in Java by creating a simple program. Viewers can follow the tutorial as they create their first class in Java. Definitions and explanations about each element are given to help prepare viewers for future …
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now