动态显示按钮

问题描述 投票:-1回答:1

我正在制作一个应用程序(Windows窗体),我有不同的按钮。我的目标是根据变量的值显示不同的按钮。例如,如果变量的值为10,它将显示前10个按钮。

到目前为止,我的代码是:

MySqlCommand command = new MySqlCommand("SELECT id_produto, designacao FROM 
produtos ORDER BY id_categoria ASC;", mConn);
MySqlDataAdapter dacom = new MySqlDataAdapter(command);
mConn.Open();
dacom.Fill(dtprodutos);
numprodutos = dtprodutos.Rows.Count;
for (int i = 1; i <= numprodutos; i++)
{
    bprod[i].Show();
}

我的按钮叫做bprod1,bprod2,bprod3等。我正在做的是从“produtos”获取“id_produto”和“designacao”并将它们放入DataTable中。然后我创建一个变量,其行数为“dtprodutos”。最后,我创建一个循环来显示按钮。

我的问题是Visual Studio不允许我做“bprod [i] .Show();”因为他认为这是一个未创建的变量。

我感谢任何建议和帮助。

c# winforms button datatable show
1个回答
-1
投票

将所有按钮放入键入的列表中。在表单范围内声明它(例如,上面的表单构造函数)。然后,在InitializeComponent(或Form_Load)之后将所有按钮添加到列表中。

List<Button> buttonList = new List<Button>();

public Form1()
{
    InitializeComponent();

    buttonList.Add(bprod1);
    buttonList.Add(bprod2);
    //etc
}

最后,当您执行查询并获取数字(numprodutos)时,从列表中显示许多元素(实际上是按钮)

numprodutos = dtprodutos.Rows.Count;
for (int i = 1; i <= numprodutos; i++)
{
    buttonList[i].Show();
}

或者,使用linq

buttonList.Take(numprodutos).ToList().ForEach(btn => btn.Show());
© www.soinside.com 2019 - 2024. All rights reserved.