2D阵列按钮显示X和Y.

时间:2013-01-05 01:48:39

标签: c# arrays visual-studio-2010 multidimensional-array

我有一个小程序,在2D数组中保存4个按钮,我想要做的是在消息框中显示数组的“X”和“Y”坐标(点击时)

我尝试了一些方法,有些方法不起作用,有些方法有效,但我不能用它来显示'X'和'Y'值

下图显示了我到目前为止的情况: enter image description here

这是我提出的代码:

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);
        }
    }
}

3 个答案:

答案 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是每个控件都具有的属性,其描述是“与对象关联的用户定义数据”,因此您可以将其设置为所需的任何对象。

我知道这可能对手术有些迟了,但希望它将对其他人有所帮助。