更改以编程方式创建的按钮的属性

本文关键字:按钮 属性 创建 方式 编程 | 更新日期: 2023-09-27 18:37:24

我通过以下方式在应用程序中创建按钮:

List<Button> btnslist = new List<Button>();
for (int i = 0; i < nbrofbtns; i++)
{
   Button newButton = new Button();
   btnslist.Add(newButton);
   this.Controls.Add(newButton);
   newButton.Width = btnsidelength;       
   newButton.Height = btnsidelength;
   newButton.Top = btnsidelength 
                   * Convert.ToInt32(Math.Floor(Convert.ToDouble(i / Form2.puzzlesize)));
   newButton.Left = btnsidelength 
                    * Convert.ToInt32(
                            Math.Floor(Convert.ToDouble(i)) 
                            - Math.Floor((Convert.ToDouble(i)) 
                            / (Form2.puzzlesize)) * (Form2.puzzlesize));
   newButton.BackgroundImage = Lights_out_.Properties.Resources.LightsOutBlack;
   newButton.Tag = (i+1).ToString();
   newButton.Click += new EventHandler(Any_Button_Click);

然后我有一个何时单击任何按钮的方法。

void Any_Button_Click(object sender, EventArgs e)
{
    //the variable b has all the insformation that the single button had itself.
    Button b = (Button)sender;
    if (b.BackgroundImage == Lights_out_.Properties.Resources.LightsOutBlack)
    {
        MessageBox.Show(b.Tag.ToString());
        MessageBox.Show(btnslist[Convert.ToInt32(b.Tag)].BackgroundImage.ToString());
        btnslist[Convert.ToInt32(b.Tag)].BackgroundImage = 
                Lights_out_.Properties.Resources.LightsOutWhite;
        MessageBox.Show(btnslist[Convert.ToInt32(b.Tag)].BackgroundImage.ToString());
    }
    else
    {
        MessageBox.Show("b.backgroundimage != lightsoutblack. Backgroundimage = " 
                        + b.BackgroundImage.ToString());
    }
}

如何更改实际按钮中的数据(然后单击所述按钮)?我特别想更改背景图像。我怎么能这样做??(我还需要更改代码创建的其他一些按钮的背景图像。

更改以编程方式创建的按钮的属性

发送方对象按钮:

Button b = (Button)sender;

。因此,您应该能够直接更改其属性:

b.WhateverPropsToChange = yourSetting;

PS:我认为这不是必需的,但是如果按钮没有直接更新,您可以尝试使用b.Refresh()让它知道某些内容已更改。

您正在处理您创建的每个按钮Click事件 - sender Any_Button_Click实际上是按钮被单击。

因此,只需将b.BackgroundImage更改为您需要的任何内容即可。