C# Winforms(.NET框架)用户控件有问题。
- 我有一个'通知'用户控件包含一个按钮,和一些信息。
- 我有一个'todaylist'表单,它可以通过数据库动态生成UC。
我不知道如何为按钮创建事件。当我单击一个按钮时,我想从UC获取一个信息(标签)。
这是用户控件(我想得到'label2'文本)
生成的用户控件:
我试过这个方法,但没有结果:
已编辑:
用户控制:
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);
}
1条答案
按热度按时间3qpi33ja1#
您可以通过定义自定义添加/移除访问器将用户控件的事件“转发”到按钮:
在主窗体中,您订阅了
notifications.Click
(它似乎是多个子控件的生成用户控件)。但实际上你应该订阅一个子控件的ButtonClick
: