2

我有一个小程序,它在 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);
        }
    }
}
4

3 回答 3

4

如果我没看错的话,这就是你的问题的答案。您正在尝试获取按钮的 X 和 Y 坐标,对吗?这是按钮单击的代码:

private void button2_Click(object sender, EventArgs e)
    {
        MessageBox.Show(button1.Location.ToString());
    }
于 2013-01-05T02:07:33.850 回答
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);
            }
于 2013-01-05T02:09:24.903 回答
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}”等

标签是每个控件都有的属性,它的描述是“与对象关联的用户定义数据”,因此您可以将其设置为您喜欢的任何对象。

我知道这对于操作来说可能有点晚了,但希望它会对其他人有所帮助。

于 2020-06-11T18:59:20.040 回答