簡體   English   中英

C#如何動態地在上下文子菜單上添加單擊事件

[英]C# How do i add click event on context sub menu each dynamically

大家好,我在創建子菜單的單擊菜單時遇到問題,通常我可以將其投射到其每個屬性上,但是我的子菜單來自數據庫,我不知道如何添加硬編碼的單擊事件

到目前為止我的代碼

void loadTechnicianData()
        {
            TechnicianPanel.Controls.Clear();
            query = "SELECT * FROM `tbl_technician`";
            using (MySqlConnection conn = constrings.GetDBConnection())
            {
                try
                {
                    conn.Open();
                    using (MySqlCommand cmd = new MySqlCommand(query, conn))
                    {
                        using (MySqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                Tech_UC uc = new Tech_UC();
                                uc.TechHeader.Text = reader["technician"].ToString();
                                uc.TechHeader.BackColor = Color.FromName(reader["color_assigned"].ToString());
                                uc.id = Convert.ToInt32(reader["t_id"].ToString());
                                TechnicianPanel.Controls.Add(uc);

                                ToolStripMenuItem cm = startToolStripMenuItem as ToolStripMenuItem;
                                cm.DropDownItems.Add(reader["technician"].ToString());

                            //here i need to call a click event to call a method void outside the loop
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    CMessageBox m = new CMessageBox("error\n" + ex);
                    m.ShowDialog();
                }
                finally
                {
                    conn.Close();
                }
            }
        }

嘗試這個:

cm.DropDownItems.Add(reader["technician"].ToString()).Click += MyMethod;

附:

void MyMethod(object sender, EventArgs e);

如果簡短且不可重用,則可以使用委托或lambda表達式代替方法:

cm.DropDownItems.Add(reader["technician"].ToString()).Click += (_sender, _e) =>
{
  ...
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM