我试图将项目从另一个类添加到列表框。
我创建一个表单,表单名称为FilterControl,它具有一个列表框控件(listBoxColumnHeaders)
我创建了一个名为FilterColumnHeader的单独类,在其中创建了一个method()addColumnHeader()
现在,我尝试从此FilterControl
类将项目添加到FilterColumnHeader
表单的列表框
这是我的代码:
public void addColumnHeader(string name)
{
try
{
string cs = ConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString;
string query = @"SELECT
AsHeading
FROM
RSHeading WITH(NOLOCK);
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = query;
cmd.Connection = con;
con.Open();
SqlDataReader rd = cmd.ExecuteReader();
FilterControl fc = new FilterControl();
while (rd.Read())
{
fc.listBoxColumnHeaders.Items.Add(rd["AsHeading"].ToString());
MessageBox.Show(rd["AsHeading"].ToString()); //record is showing on message box
}
}
}
catch(Exception ee)
{
MessageBox.Show(ee.ToString());
}
}
注意
如果我直接尝试从相同的形式(FilterControl)。它工作正常,而且数据库检索记录成功。
我将列表框控件的修饰符设置为“公共”
最佳答案
尝试在班级内部访问表单:
var fc= Application.OpenForms.OfType<FilterControl>().SingleOrDefault();
while (rd.Read())
{
fc.listBoxColumnHeaders.Items.Add(rd["AsHeading"].ToString());
MessageBox.Show(rd["AsHeading"].ToString());
}