Solved

2 sliding panels

Posted on 2015-01-20
2
146 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

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

This is about my first experience with programming Arduino.
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
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…
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …

920 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

16 Experts available now in Live!

Get 1:1 Help Now