我有一个简单的项目,其中一个按钮被分配了一个字符,我希望它只用2次按钮点击来交换值。
例如,当我第一次点击“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() { } */
}
}
答案 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
。