Перемещение панели C # при столкновении

Я новичок в C # и Winforms и пытаюсь сделать движущуюся панель. Он должен двигаться вправо до конца моего окна, а затем обратно влево. Он должен подпрыгивать из стороны в сторону. Но единственное, что произошло после нескольких часов попыток, это то, что он двигается влево и останавливается.

Используя эту форму инструментов:

Timer = tmrMoveBox (interval: 50)
Panel = pnlBox
Label = lblXY (for showing the X and Y coordinates in the form)

Вот моя первая лучшая попытка:

private void tmrMoveBox(object sender, EventArgs e)
{
    if (pnlBox.Location.X <= 316)
    {
        for (int i = 0; i <= 316; i++)
        {
            pnlBox.Location = new Point(
                pnlBox.Location.X + 2, pnlBox.Location.Y);
            string BoxLocationToString = pnlBox.Location.ToString();
            lblXY.Text = BoxLocationToString;
        }
    }

    else if (pnlBox.Location.X >= 0)
    {
        for (int i = 0; i >= 316; i++)
        {
            pnlBox.Location = new Point(
                pnlBox.Location.X - 2, pnlBox.Location.Y);
            string BoxLocationToString = pnlBox.Location.ToString();
            lblXY.Text = BoxLocationToString;
        }
    }
}

И вторая лучшая попытка:

private void tmrMoveBox(object sender, EventArgs e)
{
    int runBox = 1;

    if(runBox == 1)
    {
        while (pnlBox.Location.X <= 316)
        {
            pnlBox.Location = new Point(
                pnlBox.Location.X + 2, pnlBox.Location.Y);
            string BoxLocationString = pnlBox.Location.ToString();
            lblXY.Text = BoxLocationString;
            runBox = 0;
        }
    }
    else
    {
        while(pnlBox.Location.X > 0)
        {
            pnlBox.Location = new Point(
            pnlBox.Location.X - 2, pnlBox.Location.Y);
            string BoxLocationString = pnlBox.Location.ToString();
            lblXY.Text = BoxLocationString;
            runBox = 1;
        }
    }
}

Пробовал использовать цикл while, но затем панель просто исчезает. Я не эксперт и просто поставил перед собой эту движущуюся панель. Надеюсь, кто-нибудь может дать мне совет.

РЕДАКТИРОВАТЬ:

Form1.Designer.cs

 this.timer1.Interval = 50;
 this.timer1.Tick += new System.EventHandler(this.tmrMoveBox);
 this.timer1.Start();
 this.timer1.Step = 2;

Ответы на вопрос(2)

Ваш ответ на вопрос