Solved

2 sliding panels

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

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

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

This is about my first experience with programming Arduino.
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.

726 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