我有一个小程序,在2D数组中保存4个按钮,我想要做的是在消息框中显示数组的“X”和“Y”坐标(点击时)
我尝试了一些方法,有些方法不起作用,有些方法有效,但我不能用它来显示'X'和'Y'值
下图显示了我到目前为止的情况:
这是我提出的代码:
namespace _2DArray
{
public partial class Form1 : Form
{
private Button[,] b;
public Form1()
{
InitializeComponent();
b = new Button[2, 2];
b = new Button[,] { {button1,button2 },
{button3, button4}};
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (Button bt in b)
{
bt.Click += new System.EventHandler(this.ClickedButton);
}
}
private void ClickedButton(object sender, EventArgs e)
{
Button s = (Button)sender;
MessageBox.Show("you have clicked button:" + s);
}
}
}
答案 0 :(得分:4)
如果我读得正确,这是你的问题的答案。你试图让按钮的X和Y坐标正确吗? 以下是按钮点击的代码:
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(button1.Location.ToString());
}
答案 1 :(得分:3)
尝试指定某种指针,例如给出按钮的名称以跟踪它的坐标
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
b[i, j].Click += new System.EventHandler(this.ClickedButton);
b[i, j].Name =i+" "+j;
}
}
}
private void ClickedButton(object sender, EventArgs e)
{
Button s = (Button)sender;
MessageBox.Show("you have clicked button:" + s.Name);
}
答案 2 :(得分:1)
使用此代码
private void Form1_Load(object sender, EventArgs e) {
for (int x = 0; x < 2; x++) {
for (int y = 0; x < 2; y++) {
b[x, y].Tag = new Point(x, y);
b[x, y].Click += new System.EventHandler(this.ClickedButton);
}
}
}
private void ClickedButton(object sender, EventArgs e) {
Button s = (Button) sender;
MessageBox.Show("you have clicked button:" + s.Tag.ToString());
}
然后单击button1将显示消息“您已单击按钮:{X = 0,Y = 0}”等
Tag是每个控件都具有的属性,其描述是“与对象关联的用户定义数据”,因此您可以将其设置为所需的任何对象。
我知道这可能对手术有些迟了,但希望它将对其他人有所帮助。