【问题标题】:Changing the function of a button click?更改按钮单击的功能?
【发布时间】:2011-12-16 21:06:09
【问题描述】:

我知道答案可能很明显,但我脑子里放了个屁。

我想做的是有一个带有两个按钮的简单表单。第一个按钮显示一条消息“1”。单击第二个按钮后,单击第一个按钮时会显示“2”。再次单击第二个按钮后,它又回到说“1”。

学习了 javascript 编程后,我仍在思考 javascript。我的第一个思路是: myButton.onclick=...

在那之后我唯一能想到的就是在第一个按钮的点击函数中设置一个条件,并使用第二个按钮的点击来更改布尔值...

有没有更好的方法来做到这一点?

【问题讨论】:

  • 我怀疑是 Asp.net,而不是 WinForms。请加标签?
  • 我真的不知道。我新建了一个c# windows forms项目,但是不知道你说的WinForms还是Asp.net是什么意思
  • 我添加了 WinForms 标签。 Windows 窗体项目基本上是 WinForms。还有 WPF、SilverLight、ASP.Net 等,因此可能会造成混淆。
  • “我唯一能想到的就是在第一个按钮的点击函数中有一个条件,并使用第二个按钮的点击来更改布尔值”:这是显而易见的一个简单问题的简单解决方案,它没有任何问题。第二个按钮可以设置消息,但任何一种方式都可以。

标签: c# winforms


【解决方案1】:

让button2改变button1被点击时调用的方法:

    private void button1_Click(object sender, EventArgs e)
    {
        Text = "1";
    }
    private void button1_Click2(object sender, EventArgs e)
    {
        Text = "2";
        button1.Click -= button1_Click2;
        button1.Click += button1_Click;
    }
    private void button2_Click(object sender, EventArgs e)
    {
        button1.Click -= button1_Click;
        button1.Click += button1_Click2;
    }

【讨论】:

    【解决方案2】:

    我明白了,当第一次和第二次单击按钮 2 时会发生什么。但如果你想说它必须遵循的模式,那么:

    Bool bln = true;
    
    private void button2_Click(object sender, EventArgs e)
    {
        if(bln)
           text1();
        else
           text2();
    
        bln = !bln;
    }
    
    private void text1()
    {
       // Whatever
    }
    
    private void text2()
    {
       // Whatever
    }
    

    使用您要查找的任何内容填充该方法。在此,这些方法也可以用于 button1 点击事件。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      让第二个按钮的点击处理程序设置一个消息变量,然后让第一个按钮的点击处理程序显示它。

      【讨论】:

        【解决方案4】:

        编辑:我是为 asp.net 写的。转换成 winform 应该不难。

        声明一个字符串变量:

        public static mystring = "1";
        

        在 button2_click 上,您可以更改该值。我展示的是永久更改一次的简单案例,但您可以编写代码以任何您喜欢的方式进行替换:

        protected void btn2_Click(object sender, EventArgs e)
        {
            mystring = "2";
        }
        

        例如,要在 1 和 2 之间交替,您可以设置 int n = 1 的值,并让 btn2 将该值设置为 (3-n).ToString();

        然后做:

        protected void btn1_Click(object sender, EventArgs e)
        {
            Response.Write(mystring);
        }
        

        【讨论】:

        • 是的,这是我在想的另一件事,但我觉得有更好的方法。
        【解决方案5】:

        你必须做myButton.onclick-=function_name

        += 是添加功能

        -= 是删除功能

        【讨论】:

          【解决方案6】:

          你总是可以让它这样工作:

          private void button1_Click(object sender, EventArgs e)
          {
              button1.Text = "Button 1 Text";
              MessageBox.Show("B1 Function1");
              button1.Click -= button1_Click;
              button1.Click += button1_Click2;
          }
          
          private void button1_Click2(object sender, EventArgs e)
          {
              button.Text = "Button 1 Text 2";
              MessageBox.Show("B1 Function2");
              button1.Click -= button1_Click2;
              button1.Click += button1_Click;
          }
          

          【讨论】:

            猜你喜欢
            • 2015-06-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-01-01
            • 2013-10-06
            • 1970-01-01
            • 1970-01-01
            • 2021-07-15
            相关资源
            最近更新 更多