0

我有一个表单和一个按钮,我如何切换窗口高度,所以当我第一次点击按钮时,窗口高度会增加166,当我第二次点击按钮时,高度将减少 166。

抱歉这个问题很愚蠢,但我真的很困惑;谢谢

 private void button2_Click(object sender, EventArgs e)
    {

        int  FormHeight = this.Height;
        int  FormHeightBefore = FormHeight;

        if (this.Height == FormHeightBefore)
        {//toggle off 
            this.Height = this.Height + 166;
        }
        else { 
        //toggle on
            this.Height = this.Height - 166;
        }

    }

我尝试使用上面的代码,但它不起作用,每当我按下按钮时,表单高度仍在增加

4

4 回答 4

1

注意你的前两行:

int  FormHeight = this.Height;
int  FormHeightBefore = FormHeight;

您实际上总是将两个变量都设置为当前高度......

所以总是调用相同的 if 语句......

这将正常工作:

const int heightOffset = 166;
int  FormHeightBefore = this.Height
private void button2_Click(object sender, EventArgs e)
{
    if (this.Height == FormHeightBefore)
    {//toggle off 
        this.Height += heightOffset ;
    }
    else
    { 
       //toggle on
        this.Height = FormHeightBefore;
    }

}
于 2013-01-20T21:40:47.703 回答
1

你可以做这样的事情。

bool isExpanded;

private void button2_click(object sender, EventArgs e) 
{
    Height += (isExpanded ? -166 : 166);

    isExpanded = !isExpanded;
}
于 2013-01-20T21:45:41.493 回答
1
partial class Form1 {
    public int FormHeight;

    private void button2_Click(object sender, EventArgs e) {
        this.Height += (FormHeight = (FormHeight > 0 ? -1 : 1) * 166);
    }
}
于 2013-01-20T21:49:14.370 回答
0

您的代码失败,因为每次您输入该方法(通过按钮的点击),它会检查当前的表单高度并认为它是“初始高度”。

执行以下操作:

private readonly int initialHeight;

public Form1()
{
    InitializeComponent();
    initialHeight = this.Height;
}

private void button2_Click(object sender, EventArgs e)
{

    if (this.Height == initialHeight)
    {   // increase height
        this.Height = initialHeight + 166;
    }
    else { 
        // decrease height
        this.Height = initialHeight;
    }
}

请注意,初始initialHeight声明超出了按钮单击事件的范围。

于 2013-01-20T21:41:02.297 回答