【发布时间】:2016-05-05 09:28:11
【问题描述】:
我有两个 Windows 窗体。我已从数据库中读取数据并将数据加载到Form1(FrmSelection) 上的Listbox1。现在我想要的是,当用户从Form1 上的Listbox1 中选择一个值并单击处理按钮时,必须在Form2(FrmProcessOrder) Listbox2 上加载所选值。我尝试了不同的示例,但无法正常工作。以下是以下步骤
1.运行应用程序
2.FrmSelection 以空列表框打开,然后单击打开 FrmSelection 的处理按钮
3.FrmSelections 打开,这个表单包含一个列表框和我从数据库中读取的数据。
4.从列表框中选择一项
5.从 FrmSelections 的列表框中选择项目后单击 Addforms 按钮。
- 所选项目必须出现在 FrmProcessorder 列表框中。
问题 - 当我在选择项目后单击 Addforms 按钮时,在 FrmProcessorder 表单上出现错误(对象未设置为对象的实例)
下面是我的代码..
Form1(FrmSelection)
public partial class FrmProcessOrder : Form
{
public FrmProcessOrder()
{
InitializeComponent();
}
private void btnProcess_Click(object sender, EventArgs e)
{
Program._FrmSelection = new FrmSelection();
Program._FrmSelection.Show();
}
public void AddList(ListBox _Listing)
{
ListBoxForms.Items.AddRange(_Listing.Items);
}
}
表格2(FrmProcessOrder)
FrmProcessOrder _FrmProcessOrder;
public FrmSelection()
{
InitializeComponent();
LoadData();
}
//Method which reads data from the db and laod data on listview
public void LoadData()
{
_connection = "Data Source=MILESTONE-PC;Initial Catalog=Jack;Integrated Security=True";
_sql = "Select * from tblJackon";
_conn = new SqlConnection(_connection);
_conn.Open();
_comm = new SqlCommand(_sql, _conn);
_adapt.SelectCommand = _comm;
_adapt.Fill(_dataset, _sql);
DataTable _tbl = _dataset.Tables[0];
_dtrow = null;
foreach (DataRow _dataVariable in _tbl.Rows)
{
_dtrow = _dataVariable;
ListBoxSelection.Items.Add((_dtrow["FormNames"]));
}
}
private void btnAddForms_Click(object sender, EventArgs e)
{
_FrmProcessOrder.AddList(ListBoxSelection); // It throws error on this line after select from listbox so that the item must to FrmProcessOrder listbox
_FrmProcessOrder = new FrmProcessOrder();
}
【问题讨论】:
-
FrmProcessOrder 不包含采用 0 个参数的构造函数。您可以尝试移动代码以便在加载表单后加载数据吗?
-
我已经更新了代码并添加了一些解释以使其更加清晰。
-
你能显示错误吗?