【发布时间】:2018-09-17 07:19:53
【问题描述】:
我已经以窗口形式动态添加了按钮控件,现在我想为每个按钮控件添加不同的事件。 这是我从数据库中动态添加按钮的代码。
private void GetButtonDynamically()
{
SqlConnection conn = GetConnection();
conn.Open();
using (conn)
{
SqlCommand cmd = new SqlCommand("Select MenuName from tblMainMenu",conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Button mybutton = new Button();
mybutton.Location = new Point(x, y + 54);
y += 54;
mybutton.Height = 44;
mybutton.Width = 231;
mybutton.BackColor = Color.Gainsboro;
mybutton.ForeColor = Color.Black;
mybutton.Text = reader["MenuName"].ToString();
mybutton.Name = reader["MenuName"].ToString();
mybutton.Font = new Font("Georgia", 12);
Controls.Add(mybutton);
mybutton.Click+= new EventHandler(mybutton_Click);
}
conn.Close();
}
}
现在我面临的问题是它为每个动态创建的按钮生成相同的事件,我希望每个按钮都有不同的方法
这是点击事件
private void mybutton_Click(object sender, EventArgs e)
{
MessageBox.Show("Button is Clicked");
}
【问题讨论】:
-
mybutton_Click方法的签名是什么? -
每个按钮的不同方法之间有什么区别?
-
mybutton.MouseHover += mybutton_Click应该可以工作,无需将其包装在委托中 -
@ChetanRanpariya 不同的事件意味着例如我想要一个按钮来显示按钮被点击,而在另一个按钮上我想要显示按钮被悬停。
-
您应该知道要为哪个按钮处理
Click事件以及要为哪个按钮处理Hover事件。然后将这些事件处理程序附加到这些按钮。还要记住,事件处理程序的sender参数包含其事件发生的按钮,您可以通过以下方式获取该按钮:var b = (Button)sender;。
标签: c# sql-server winforms mouseevent mousehover