C#按钮文本并调整大小

时间:2010-01-05 14:58:38

标签: c#

我有一个简单的按钮,点击它时应该将文本从帮助更改为隐藏和窗体大小。我遇到的问题是它无法找到if语句。它无法看到button3.text帮助或隐藏。有任何提示或建议吗?

private void button2_Click(object sender, EventArgs e)
{
        string helpstring = "Help";
        string hidestring = "Hide";
        if (button3.Text == helpstring)
        {
            button3.Text = hidestring;
            Size = new System.Drawing.Size(1106, 563);
        }
        if (button3.Text == "Hide")
        {
            Size = new System.Drawing.Size(586, 563);
            button3.Text = helpstring;
        }
    }

6 个答案:

答案 0 :(得分:5)

你忘了“别的”。这应该有效:

private void button2_Click(object sender, EventArgs e)
{
    string helpstring = "Help";
    string hidestring = "Hide";
    if (button3.Text == helpstring)
    {
        button3.Text = hidestring;
        Size = new System.Drawing.Size(1106, 563);
    }
    else if (button3.Text == "Hide") //this is where you should put an else
    {
        Size = new System.Drawing.Size(586, 563);
        button3.Text = helpstring;
    }
}

答案 1 :(得分:3)

看起来你的按钮错了。

处理程序名为button 2 _Click,但代码访问按钮 3
这就是始终命名控件的原因。

您的问题可能是 3 按钮的开头是TextHelpHide。因此,if语句都不会执行任何操作。

你应该在函数中设置一个断点(单击你的一行代码旁边的左边的栏),然后将鼠标移到button3.Text上,看看它实际上等于什么。

但是,如果按钮的文本为Help,则不会发生任何事情。正如manitra指出的那样,您没有else子句。

因此,您的代码会看到按钮的文字为Help,并将其更改为Hide
但是,下一个if语句会看到该按钮的文字现在为Hide,并会将其更改回Help

答案 2 :(得分:2)

你有两个并行的ifs。将执行第一个块,将按钮文本更改为“隐藏”。然后,第二个也将执行,将文本更改回“帮助”。

改为使用else块。

答案 3 :(得分:1)

为什么不在方法的开头设置一个断点,看看button3.Text的值是什么?

我的猜测是你的事件没有正确连接,代码甚至没有被激活。

答案 4 :(得分:1)

按钮文本中是否有&符号(例如&帮助或&隐藏),以便用户可以使用键盘快捷键?如果是这样,text属性将不相等。

答案 5 :(得分:1)

此代码存在一些问题。

首先,确保按钮的click事件正确挂钩到button2_Click处理程序,因为方法名称和方法中引用的对象之间似乎存在一些差异。出于可读性的考虑,这些命名应该固定。

其次,您的代码使用两个if语句,而不是if...else语句。如果代码中的第一个条件为真,则第一个if内的代码将导致第二个if中的条件为真,从而将所有条件恢复为原始条件。

您的代码应该阅读(包括重命名您的方法):

private void button3_Click(object sender, EventArgs e)
{
    string helpstring = "Help";
    string hidestring = "Hide";
    if (button3.Text == helpstring)
    {
        button3.Text = hidestring;
        Size = new System.Drawing.Size(1106, 563);
    }
    else
    {
        Size = new System.Drawing.Size(586, 563);
        button3.Text = helpstring;
    }
}

注意:如果这是唯一的两个可能条件,则不需要第二个if,简单else将提高性能并达到预期效果。