我很努力地创建此脚本,它生成好友请求。我需要为每个按钮和标签特别添加一个ID,以便在用户单击接受或拒绝按钮时将其删除。c#如何创建按钮并稍后通过ID删除它
Button reqAccept;
Button reqReject;
Label reqUserName;
private void loadFriendRequests()
{
using (SqlConnection connection = new SqlConnection(con))
{
using (SqlCommand cmd = new SqlCommand("Select UserFirstName, UserLastName, FriendEmail From PendingRequests Where FriendEmail = @fe", connection))
{
connection.Open();
cmd.Parameters.AddWithValue("@fe", Properties.Settings.Default.Email);
using (SqlDataReader dr = cmd.ExecuteReader())
{
i = 0;
while (dr.Read())
{
i++;
foreach (object request in i.ToString())
{
Label userName = new Label();
Button accept = new Button();
Button reject = new Button();
accept.Click += Accept_Click;
reject.Click += Reject_Click;
userName.Text = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(dr["UserFirstName"].ToString() + " " + dr["UserLastName"].ToString());
accept.Text = "Accept";
reject.Text = "Reject";
friendRequestPanel.Controls.Add(userName);
friendRequestPanel.Controls.Add(accept);
friendRequestPanel.Controls.Add(reject);
reqAccept = accept;
reqReject = reject;
reqUserName = userName;
}
}
}
}
}
Requests.Start();
}
private void Reject_Click(object sender, EventArgs e)
{
friendRequestPanel.Controls.Remove(reqUserName);
friendRequestPanel.Controls.Remove(reqAccept);
friendRequestPanel.Controls.Remove(reqReject);
updateFriendRequestDatabase(2);
}
private void Accept_Click(object sender, EventArgs e)
{
friendRequestPanel.Controls.Remove(reqUserName);
friendRequestPanel.Controls.Remove(reqAccept);
friendRequestPanel.Controls.Remove(reqReject);
updateFriendRequestDatabase(1);
}
什么代码是这样做的: 上面的代码是选择是一样的用户的电子邮件,并为每一个朋友的要求有使用标签和2,将其添加到“FlowLayourPanel的要求按钮来接受或拒绝。
这是GUI的样子:GUI
当用户点击一个按钮,它显然会去的事件处理程序,但我怎么确定哪个按钮被按下?
它必须是这样的:
friendRequestPanel.Controls.Remove(reqUserName##ID##);
你可以得到该事件处理程序中的按钮为: 'Button buttonClicked = sender as Button'' –
使用按钮的Tag属性。你可以用一些识别值来设置它(例如你的SQL查询检索到的一个ID)然后在按钮单击事件中,在将发件人参数强制转换为按钮后,读回该属性 – Steve
我还会提出一件事。 您应该扩展按钮类。并使用另一个字段说“ID”。然后,当您将按钮放置在表单上时,将相关值分配给该字段。在此之后,当您在点击事件中取回按钮时,您可以获得该值。这是否有道理,让我知道,我会发布整个解决方案。 –