c# 单击时获取以编程方式添加的按钮的位置

本文关键字:添加 按钮 位置 方式 编程 单击 获取 | 更新日期: 2023-09-27 18:32:47

我正在不同的位置动态创建许多按钮,每个按钮都应该响应相同的事件。由于我必须知道我点击了哪个按钮,所以我需要我点击的按钮的位置。我无法为每个按钮添加不同的事件处理程序,它们在 30*50 的网格上生成,这意味着在最坏的情况下,我会得到 1500 个按钮。这是很多按钮。

    private void createNewEnt(int ID, Point position, int style)
    {
        Button b = new Button();
        b.Location = getItemGridLoc(position);
        b.Text = getInitial(ID);
        b.Size = new System.Drawing.Size(21, 21);
        b.FlatStyle = FlatStyle.Popup;
        b.Click += new EventHandler(bClick);
        if (style == 0)
        {
            b.BackColor = Color.White;
            b.ForeColor = Color.Black;
        }
        else if (style == 1)
        {
            b.BackColor = Color.Black;
            b.ForeColor = Color.White;
        }
        this.Controls.Add(b);
        b.BringToFront();
    }
    void bClick(object sender, EventArgs e)
    {
        MessageBox.Show("you clicked on a Button :D");
    }

c# 单击时获取以编程方式添加的按钮的位置

可以使用

事件处理程序的 sender 参数并将其强制转换为按钮,然后检索其位置。

void bClick(object sender, EventArgs e)
{
    Button cb = (sender as Button);
    MessageBox.Show("You clicked on a Button :D!");
    MessageBox.Show(String.Format("Location of clicked Button : {0}, {1}.", cb.Location.X, cb.Location.Y)); // This is just for example.
}

同样,您也可以使用按钮执行其他操作,即cb和/或获取其其他属性。

void bClick(object sender, EventArgs e)
{
    Button btn1 = (Button)sender;
    string buttonID = btn1.ID;
    MessageBox.Show("you clicked on a Button :D");
}

这就是获取按钮 ID 和所需的所有其他属性的方法。