0

我有三个按钮(button1、button2、button3),分别显示1、2和3

现在我想做的是有一个秘密组合来“解锁”程序,即“13221”

但是我不知道如何知道用户是否按下了按钮,以及如何检查订单?

我目前的逻辑是:

private void Form1_Load(object sender, EventArgs e)
{
  if(button1.KeyPress=true && button3.KeyPress=true && button2.KeyPress=true && button2.KeyPress=true && button1.KeyPress=true)
  {
    label1.Visible = true;
    label2.Visible = true;
  }
}

这显然不起作用..任何人都可以帮助我吗?:/

4

5 回答 5

1

您可以简单地注册每个传入的按钮按下。对于普通按钮,使用 ButtnClick 事件。

将值存储在列表中。那可能是一个简单的字符串。每次检查列表是否等于您的密码。

我认为您仍然需要有关如何以及何时重置尝试的规范。

你实际上是在制造一个状态机。

于 2012-10-16T16:20:41.937 回答
1

让我大吃一惊的是,您需要==在 if 语句中使用来检查相等性。一个单一=的将这些属性分配给true。

话虽如此,我会采取的方法是:

- 给每个按钮一个唯一的 id

- 在每个按钮单击时,将 id 存储在列表中。

- 在每次点击之后,或者当用户按下提交按钮时,根据您的预定义组合检查列表。

于 2012-10-16T16:22:35.210 回答
1

对象发送者按钮可以输入到按钮中,您可以在其中检查按钮的名称,从而允许您使用单个 if 语句。

Button buttonPressed = (button)Sender;

MSDN 上应该有关于它进行从对象到按钮的类型转换的信息。(我在工作,或者我会确保我的代码 100% 值得复制粘贴,如果这样做的人想要编辑我的帖子,请随意。)

于 2012-10-16T16:29:00.780 回答
1

使用 StringBuilder 对象将每个键值存储到其中。因此,在每个按钮的点击事件中,您将根据按下的按钮附加“1”、“2”或“3”,然后检查当前序列。

StringBuilder _code = new StringBuilder();

void button1_Click(object sender, EventArgs e)
{
    _code.Append('1');

  CheckCode();
}

// ... similarly implement other button click events


void CheckCode()
{
    if (_code.ToString().Contains("13221"))
    {
        MessageBox.Show("ACCESS GRANTED");
    }
}
于 2012-10-16T16:30:07.147 回答
1

首先,您应该按照Ian的说法更正您的代码

改正为

if(button1.KeyPress==true.... 

或者

if(button1.KeyPress.Equals(true)...  //recommended in C#

然后
1)keypreview --> true在表单属性中设置。2)在事件
上实现按钮功能。 3)取一个文本框并设置属性使其透明 4)对文本框实现事件函数以检查组合。form_keypress

text_changed

这可能行不通,但我希望这个概念能给你一些想法。

于 2012-10-16T16:49:56.563 回答