C#帮助交换值

时间:2017-07-20 16:03:48

标签: c#

我有一个简单的项目,其中一个按钮被分配了一个字符,我希望它只用2次按钮点击来交换值。

enter image description here

例如,当我第一次点击“G”时它会保持,当我点击第二个按钮例如“N”时,G和N将交换值。

我已经设法启动它,但不知道接下来要做什么才能让我通过2次点击进行交换。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Guess_Jumble_Word
{
  public partial class Form1 : Form
  {
      public Form1()
      {
          InitializeComponent();
      }

      int count = 0;
      string tmp, txt1, txt2;

      private void Form1_Load(object sender, EventArgs e)
      {

      }

      private void button1_Click(object sender, EventArgs e)
      { 
          //G ug A
          count++;

          if (count == 1)
          {
              btn1.Text = btn1.Text.ToString();
          }
          else if(count == 2)
          {

          }
      }

      private void button2_Click(object sender, EventArgs e)
      {

      }

      private void resetCount()
      {
          count = 0;
      }

    /* private void buttonG() { } */
  }
}

2 个答案:

答案 0 :(得分:1)

您可以使用相同的点击事件并计算您点击它的次数,并跟踪点击的第一个按钮并在第二次点击时切换

Button firstButton;
int count = 0;

private void button1_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;

    if (count == 0)
    {
        firstButton = button;
        count++;
    }
    else if(count == 1)
    {
        count = 0;
        string temp = button.Text;

        button.Text = firstButton.Text;
        firstButton.Text = temp;

    }
}

答案 1 :(得分:1)

你可以这样做:

int count = 0;
Button first = null;

private void button1_Click(object sender, EventArgs e)
{
    buttonClick(sender);
}

private void buttonClick(object sender)
{
  count++;
  if (count == 1)
  {
    first = sender as Button;
  }
  else if(count == 2)
  {
    swap(sender);
    resetCount();
  }
}

private void swap(object sender)
{
  if(first != null) //just in case, but it should not happen
  {
    Button second = sender as Button;
    string aux = second.Text;
    second.Text = first.Text;
    first.Text = aux;
  }
}

private void resetCount()
{
    count = 0;
}

正如您所看到的,我正在保存对第一个单击按钮的引用,否则我将无法在第二次单击时进行交换。

由于您希望通过这样做完成所有按钮中的相同行为,因此您只需在每个buttonClick方法中调用_Click