[英]c# winform .net create button click event for user control
我對 c# winform(.net 框架)用戶控件有疑問。
我不知道如何為按鈕創建事件。 當我單擊一個按鈕時,我想從 UC 獲取一個信息(標簽)。
圖片:
UC(我想得到'label2'文本)
生成的 UC
我試過這種方式但沒有:
編輯:
加州大學
public event EventHandler<ActionTaskEventArgs> ActionTaskClicked;
private void button1_Click(object sender, EventArgs e)
{
string cardid = label2.Text;
var args = new ActionTaskEventArgs(cardid);
ActionTaskClicked?.Invoke(this, args);
}
public class ActionTaskEventArgs : EventArgs
{
public ActionTaskEventArgs(string taskId)
{
TaskId = taskId;
}
public string TaskId { get; }
}
形式
//UC generating:
if (statusz[i] == "Kiadott")
{
listItems[i] = new notifications();
listItems[i].Title = title[i];
listItems[i].Details = details[i];
listItems[i].Id = id[i].ToString();
listItems[i].Finish = "Ma";
listItems[i].BtnTxt = "Kezdés";
listItems[i].BtnVisible = true;
listItems[i].color = Color.FromArgb(254, 95, 85);
flowLayoutPanel1.Controls.Add(listItems[i]);
listItems[i].ActionTaskClicked += this.ActionTask_Clicked;
}
//
private void ActionTask_Clicked(object sender, notifications.ActionTaskEventArgs e)
{
MessageBox.Show(e.TaskId);
}
有人可以幫我嗎?
現在我得到一個錯誤:
void UC_Click(object sender, EventArgs e)
{
//I gave an error for the below row! Can't convert button type to notifications type i guess.
notifications obj = (notifications)sender;
MessageBox.Show(obj.Id);
}
您可以通過定義自定義添加/刪除訪問器將用戶控件的事件“轉發”到按鈕:
// UC:
public event EventHandler ButtonClick
{
add => btn.Click += value;
remove => btn.Click -= value;
}
並在您的主窗體中訂閱notifications.Click
。單擊(這似乎是生成的多個孩子的用戶控件)。 但實際上您應該訂閱子控件的ButtonClick
:
((UC)asd.Controls[0]).ButtonClick += Child0Click;
你不需要
public event EventHandler btnClick;
嘗試刪除它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.