如何在没有构造函数的情况下将数据绑定到用户控件?
How to bind Data to usercontrol without constructor?
我使用了这个 link https://www.codeproject.com/articles/739902/how-to-easily-host-wpf-control-inside-windows-form 的用户控件
我只能在构造函数中的这个用户控件中加载数据但是我想从其他方法调用它但是我失败了有什么办法吗?
构造函数是
public Getstarted()
{
InitializeComponent();
List<Employee2> employees = new List<Employee2>();
try
{
con = new SqlConnection(cs.DBConn);
con.Open();
cmd = new SqlCommand("SELECT Participant.ParticipantName, MeetingParticipant.Title, Participant.ParticipantId FROM MeetingParticipant INNER JOIN Participant ON MeetingParticipant.ParticipantId = Participant.ParticipantId INNER JOIN Meeting ON MeetingParticipant.MeetingId = Meeting.MeetingId where Meeting.Statuss='Open'", con);
rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (rdr.Read() == true)
{
employees.Add(new Employee2() { Name = rdr[0].ToString(), Title = rdr[1].ToString(), Id = rdr[2].ToString()});
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
this.comboBoxWithGrid_WinformsHost1.Employee2s = employees;
}
我已经在按钮事件上尝试过但失败了
private void MyMethod()
{
List<Employee2> employees = new List<Employee2>();
try
{
con = new SqlConnection(cs.DBConn);
con.Open();
cmd = new SqlCommand(" SELECT Participant.ParticipantName, MeetingParticipant.Title,
Participant.ParticipantId FROM MeetingParticipant
INNER JOIN
Participant ON MeetingParticipant.ParticipantId =
Participant.ParticipantId INNER JOIN Meeting ON
MeetingParticipant.MeetingId = Meeting.MeetingId where
Meeting.Statuss='Open'", con);
rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (rdr.Read() == true)
{
employees.Add(new Employee2() { Name = rdr[0].ToString(), Title = rdr[1].ToString(), Id = rdr[2].ToString()});
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
this.comboBoxWithGrid_WinformsHost1.Employee2s = employees;
}
这是我的第一个问题,我是这个领域的新手如果有什么遗漏请尝试理解我的局限性谢谢。
这不是我问题的直接答案,但我解决了我的问题
使用这条线
this.comboBoxWithGrid_WinformsHost1.Employee2s.AddRange(employees);
我使用了这个 link https://www.codeproject.com/articles/739902/how-to-easily-host-wpf-control-inside-windows-form 的用户控件 我只能在构造函数中的这个用户控件中加载数据但是我想从其他方法调用它但是我失败了有什么办法吗? 构造函数是
public Getstarted()
{
InitializeComponent();
List<Employee2> employees = new List<Employee2>();
try
{
con = new SqlConnection(cs.DBConn);
con.Open();
cmd = new SqlCommand("SELECT Participant.ParticipantName, MeetingParticipant.Title, Participant.ParticipantId FROM MeetingParticipant INNER JOIN Participant ON MeetingParticipant.ParticipantId = Participant.ParticipantId INNER JOIN Meeting ON MeetingParticipant.MeetingId = Meeting.MeetingId where Meeting.Statuss='Open'", con);
rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (rdr.Read() == true)
{
employees.Add(new Employee2() { Name = rdr[0].ToString(), Title = rdr[1].ToString(), Id = rdr[2].ToString()});
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
this.comboBoxWithGrid_WinformsHost1.Employee2s = employees;
}
我已经在按钮事件上尝试过但失败了
private void MyMethod()
{
List<Employee2> employees = new List<Employee2>();
try
{
con = new SqlConnection(cs.DBConn);
con.Open();
cmd = new SqlCommand(" SELECT Participant.ParticipantName, MeetingParticipant.Title,
Participant.ParticipantId FROM MeetingParticipant
INNER JOIN
Participant ON MeetingParticipant.ParticipantId =
Participant.ParticipantId INNER JOIN Meeting ON
MeetingParticipant.MeetingId = Meeting.MeetingId where
Meeting.Statuss='Open'", con);
rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (rdr.Read() == true)
{
employees.Add(new Employee2() { Name = rdr[0].ToString(), Title = rdr[1].ToString(), Id = rdr[2].ToString()});
}
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
this.comboBoxWithGrid_WinformsHost1.Employee2s = employees;
}
这是我的第一个问题,我是这个领域的新手如果有什么遗漏请尝试理解我的局限性谢谢。
这不是我问题的直接答案,但我解决了我的问题 使用这条线
this.comboBoxWithGrid_WinformsHost1.Employee2s.AddRange(employees);