我很努力地創建此腳本,它生成好友請求。我需要爲每個按鈕和標籤特別添加一個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」。然後,當您將按鈕放置在表單上時,將相關值分配給該字段。在此之後,當您在點擊事件中取回按鈕時,您可以獲得該值。這是否有道理,讓我知道,我會發布整個解決方案。 –