动态按钮c#

时间:2015-02-07 19:10:00

标签: winforms c#-4.0

我在c#中遇到动态按钮的问题。我已经为Pos开发了一个应用程序,我需要创建一组产品,但是当我点击组按钮时,我必须按产品组的名称显示产品分类。

这是我的代码:

private void Pos_Load(object sender, EventArgs e)
{
    MySqlConnection conn = new MySqlConnection("server=localhost;user id=root;database=programmj;allowuservariables=True");
    conn.Open();

    string query = string.Format("SELECT * FROM priduct_group");

    MySqlCommand cmd = new MySqlCommand(query);
    DataTable dt = new DataTable();
    DataSet ds = new DataSet();

    MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn);
    adapter.Fill(dt);

    ds.Tables.Add(dt);

    int top = 0;
    int left = 4;

    foreach (DataRow dr in dt.Rows)
    {
             Button button = new Button();
             button.FlatStyle = FlatStyle.Flat;
             button.BackColor = Color.Gold;
             button.Text = dr[1].ToString();
             button.Font = new Font("Microsoft Sans Serif", 20, FontStyle.Bold);
             button.Size = new Size(170, 85);
             button.Left = left;
             button.Top = top;
             panel8.Controls.Add(button); // here
             top += button.Height + 2;
             button.Click += new System.EventHandler(Button_Click);
    }
}

这是我展示产品的另一个代码

private void Button_Click(object sender, EventArgs e)
{
    MySqlConnection conn = new MySqlConnection("server=localhost;user id=root;database=programmj;allowuservariables=True");
    conn.Open();

    string query = string.Format("SELECT * FROM tblartikujt ");
    MySqlCommand cmd = new MySqlCommand(query);

    DataTable dt = new DataTable();
    DataSet ds = new DataSet();

    MySqlDataAdapter adapter = new MySqlDataAdapter(query, conn);
    adapter.Fill(dt);

    ds.Tables.Add(dt);

    int top = 0;
    int left = 4;

    foreach (DataRow dr in dt.Rows)
    {
            panel5.Dock = DockStyle.Right;
            Button button = new Button();
            button.Padding = new Padding(20, 3, 20, 3);
            button.FlatStyle = FlatStyle.Flat;
            button.ForeColor = Color.White;
            button.BackColor = Color.Green;
            button.Text = dr[3].ToString();
            button.Text = dr[10].ToString();
            button.Font = new Font("Microsoft Sans Serif", 14, FontStyle.Bold);
            button.Size = new Size(200, 85);
            button.Left = left;
            button.Top = top;
            panel5.Controls.Add(button); // here
            top += button.Height + 2;
    }
}

1 个答案:

答案 0 :(得分:1)

你的问题似乎很模糊,但让我试试。

您是否在询问如何以排序方式在方法button中分配Pos_Load? (通过这样做,panel8将按照您排序的方式包含按钮。)

如果您要问的是,您只需使用order by编写SQL查询,如下所示:

SELECT
        *
FROM
        product_group
ORDER BY
        product_name
DESC

通过上述查询,您可以控制DataRow 按顺序进行选择,这将导致button排序DataRow's信息。