C# 如何订阅一个 UserControl 事件/UserControl 没有实例名
C# How to subscribe to a UserControl event / UserControl has no instance name
我创建了一个显示来自 mySQL 数据库(任务主题、日期、时间)的数据的用户控件。
根据任务的数量,将多次创建此 UserControl。
我正在这样创建用户控件:
taskSubjectPanel.Controls.Clear();
DataTable taskdata = new DataTable();
sql.Connect("JonasW");
taskdata = sql.GetTasks(username);
sql.Disconnect();
if(taskdata.Rows.Count>0)
{
for (int i = 0; i < taskdata.Rows.Count; i++)
{
taskSubjectPanel.Controls.Add(new TaskSubject(taskdata.Rows[i][0].ToString(),
taskdata.Rows[i][1].ToString(),
taskdata.Rows[i][2].ToString(),
taskdata.Rows[i][3].ToString(),
taskdata.Rows[i][4].ToString(),
taskdata.Rows[i][5].ToString(),
taskdata.Rows[i][6].ToString()));
}
}
taskSubjectPanel.Refresh();
它被添加到流布局面板中。
我创建了一个 public 事件和一个 public 数据表,我希望在单击 UserControl 时访问该数据表:
public event EventHandler TaskSubjectClick;
public DataTable taskdata;
这就是 public 事件被触发的地方:
private void RedirectMouseClick(object sender, EventArgs e)
{
sql.Connect("JonasW");
taskdata = sql.GetTaskData(absenderSQL, empfaengerSQL, subjectText.Text,
messageSQL,
dateText.Text, timeText.Text, finishedSQL);
sql.Disconnect();
this.TaskSubjectClick(this, e);
}
因为它没有名称,我如何访问事件和数据表?
要创建自定义事件:
public delegate void TaskSubjectClick(DataTable taskdata);/*<- Put all data you want to pass here*/
public event TaskSubjectClick TaskSubjectClickEvent;
要调用您必须使用调用的事件:
TaskSubjectClickEvent.Invoke(yourdatatable); //Invoke the event and add your data you want to pass
在您的 Mainform 中,您必须按以下方式添加事件:
yourUserControl.TaskSubjectClickEvent += MainForm_TaskSubjectClickEvent;
我创建了一个显示来自 mySQL 数据库(任务主题、日期、时间)的数据的用户控件。
根据任务的数量,将多次创建此 UserControl。
我正在这样创建用户控件:
taskSubjectPanel.Controls.Clear();
DataTable taskdata = new DataTable();
sql.Connect("JonasW");
taskdata = sql.GetTasks(username);
sql.Disconnect();
if(taskdata.Rows.Count>0)
{
for (int i = 0; i < taskdata.Rows.Count; i++)
{
taskSubjectPanel.Controls.Add(new TaskSubject(taskdata.Rows[i][0].ToString(),
taskdata.Rows[i][1].ToString(),
taskdata.Rows[i][2].ToString(),
taskdata.Rows[i][3].ToString(),
taskdata.Rows[i][4].ToString(),
taskdata.Rows[i][5].ToString(),
taskdata.Rows[i][6].ToString()));
}
}
taskSubjectPanel.Refresh();
它被添加到流布局面板中。 我创建了一个 public 事件和一个 public 数据表,我希望在单击 UserControl 时访问该数据表:
public event EventHandler TaskSubjectClick;
public DataTable taskdata;
这就是 public 事件被触发的地方:
private void RedirectMouseClick(object sender, EventArgs e)
{
sql.Connect("JonasW");
taskdata = sql.GetTaskData(absenderSQL, empfaengerSQL, subjectText.Text,
messageSQL,
dateText.Text, timeText.Text, finishedSQL);
sql.Disconnect();
this.TaskSubjectClick(this, e);
}
因为它没有名称,我如何访问事件和数据表?
要创建自定义事件:
public delegate void TaskSubjectClick(DataTable taskdata);/*<- Put all data you want to pass here*/
public event TaskSubjectClick TaskSubjectClickEvent;
要调用您必须使用调用的事件:
TaskSubjectClickEvent.Invoke(yourdatatable); //Invoke the event and add your data you want to pass
在您的 Mainform 中,您必须按以下方式添加事件:
yourUserControl.TaskSubjectClickEvent += MainForm_TaskSubjectClickEvent;