Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每次单击按钮时面板都会移动_C#_.net_Winforms_Panel_Move - Fatal编程技术网

C# 每次单击按钮时面板都会移动

C# 每次单击按钮时面板都会移动,c#,.net,winforms,panel,move,C#,.net,Winforms,Panel,Move,我正在使用WinForms。在我的表格中,我有一个面板和一个按钮 目标:每次单击按钮时,我都希望面板向上移动 问题:我目前遇到的问题是面板只向上移动一次 private void Button_Up_Click(object sender, EventArgs e) { if (panel1.Location.Y != 250) { while (panel1.Location.Y > 250)

我正在使用WinForms。在我的表格中,我有一个面板和一个按钮

目标:每次单击按钮时,我都希望面板向上移动

问题:我目前遇到的问题是面板只向上移动一次

    private void Button_Up_Click(object sender, EventArgs e)
    {
        if (panel1.Location.Y != 250)
        {
            while (panel1.Location.Y > 250)
            {
                panel1.Location = new Point(panel1.Location.X, panel1.Location.Y - 80);

            }
        }

        else  
        {
            if (panel1.Location.Y < 1000)
            {
                while (panel1.Location.Y > 10)
                {
                    panel1.Location = new Point(panel1.Location.X, panel1.Location.Y - 80);

                }
            }
        }

    }
private void按钮\u Up\u单击(对象发送者,事件参数e)
{
如果(面板1.位置Y!=250)
{
而(面板1.位置Y>250)
{
panel1.Location=新点(panel1.Location.X,panel1.Location.Y-80);
}
}
其他的
{
if(面板1.位置Y<1000)
{
而(面板1.位置Y>10)
{
panel1.Location=新点(panel1.Location.X,panel1.Location.Y-80);
}
}
}
}

第二个
while
使它尽可能地移动


随后的单击将发现
panel1.Location.Y
已经存在是否调试了代码?根据您的代码,它将移动到满足条件的最终位置。 之后,每次输入第一个“if”,因为值不是250(而是更少),所以忽略else,什么也不发生


如果Y不小于面板的高度,您可能只需要检查一次,然后根据您的值向上移动80。

您的while循环将继续移动面板,直到它满足您的条件。我删除了第二个while,但面板仍然只移动一次。