C# 动态用户控件单击事件

C# 动态用户控件单击事件,c#,winforms,event-handling,click,dynamic-usercontrols,C#,Winforms,Event Handling,Click,Dynamic Usercontrols,用户控制: private string lastName; public string LastName { get { return lastName; } set { lastName = value; lastNameTextBox.Text = value; } } 表格: 表单从数据库加载记录,并在动态创建的每个usercontrols文本框中显示每个姓氏。 当单击动态usercontrol时,如何在窗体的文本框中显示附加信息,如地址 尝试: private

用户控制:

private string lastName;
public string LastName
{
get { return lastName; }
set
{
    lastName = value;
    lastNameTextBox.Text = value;
}
}
表格:

表单从数据库加载记录,并在动态创建的每个usercontrols文本框中显示每个姓氏。 当单击动态usercontrol时,如何在窗体的文本框中显示附加信息,如地址

尝试:

    private void usercontrol_Click(object sender, EventArgs e)
    {
        using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString))
        {
            myDatabaseConnection.Open();
            using (SqlCommand mySqlCommand = new SqlCommand("Select Address from Employee where LastName = @LastName ", myDatabaseConnection))

            {
                UserControl2 usercontrol = new UserControl2();
                mySqlCommand.Parameters.AddWithValue("@LastName", usercontrol.LastName;
                SqlDataReader sqlreader = mySqlCommand.ExecuteReader();

                if (sqlreader.Read())
                {
                    textBox1.Text = (string)sqlreader["Address"];
                }

            }
        }
    }
在用户控件UserControl2中(在构造函数或InitializeComponent方法中),应该将click事件转发给潜在的侦听器

诸如此类:

public UserControl2()
{
    ...
    this.lastNameTextBox.Click += (s, a) => OnClick(a);
    ...
}
在用户控件UserControl2中(在构造函数或InitializeComponent方法中),应该将click事件转发给潜在的侦听器

诸如此类:

public UserControl2()
{
    ...
    this.lastNameTextBox.Click += (s, a) => OnClick(a);
    ...
}

首先。在您的第一个代码片段中,您执行“selectid from…”,但希望在读取器中找到字段“LastName”——这是行不通的

第二。如果您知道需要从
Employee
表中获取更多信息,我建议您将其存储在与
UserControl
相同的
LastName
中。执行“Select*from…”,将另一个字段和属性添加到
UserControl2
,并在
Read
循环中分配它:

usercontrol.Address = (string)DR1["Address"];
第三,。在第二个代码片段中,使用

UserControl2 usercontrol = (UserControl2)sender;
而不是

UserControl2 usercontrol = new UserControl2();
因为新创建的用户控件将不会分配任何
LastName

然后:


首先。在您的第一个代码片段中,您执行“selectid from…”,但希望在读取器中找到字段“LastName”——这是行不通的

第二。如果您知道需要从
Employee
表中获取更多信息,我建议您将其存储在与
UserControl
相同的
LastName
中。执行“Select*from…”,将另一个字段和属性添加到
UserControl2
,并在
Read
循环中分配它:

usercontrol.Address = (string)DR1["Address"];
第三,。在第二个代码片段中,使用

UserControl2 usercontrol = (UserControl2)sender;
而不是

UserControl2 usercontrol = new UserControl2();
因为新创建的用户控件将不会分配任何
LastName

然后:


但是尝试失败了为什么?这里没有足够的信息让我们知道你在做什么,更多的代码也不是答案。解释一下你想要什么,你在做什么,还有什么不起作用。@Michael-为什么尝试不起作用?这里没有足够的信息让我们知道你在做什么,更多的代码也不是答案。解释你想要什么,你在做什么,什么不起作用。@Michael-