Solved

2 sliding panels

Posted on 2015-01-20
2
151 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
ID: 40560173
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
ID: 40560240
Awesome Mike thank you very much!
0

Featured Post

Resolve Critical IT Incidents Fast

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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!
This is about my first experience with programming Arduino.
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 …
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

856 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