我正在處理庫存軟件。在此軟件中,當用戶按下Ctrl +空格鍵時,系統將打開一個表單(frmProducts.cs),顯示所有產品列表。在此表單上,用戶可以按名稱搜索產品,從此表單中選擇產品,然後按按鈕選擇。所選產品將隨產品代碼一起顯示在銷售發票產品名稱文本框中。防止一個表單打開兩次,同時傳遞一些數據
現在問題發生在用戶選擇產品程序時會打開新的銷售發票表單並且不會將數據加載到舊的表單中。該程序應該顯示已填好的數據已打開的表單。
我寫打開產品信息的代碼是:
private void txtProductCode1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.Space)
{
// frm4.Instance.Show();
frmProducts cs = new frmProducts();
cs.Show();
}
}
我對frmProducts寫道選擇按鈕的代碼是:
int ItemNo;
string sql;
if (lvProducts.SelectedItems.Count == 0)
{
MessageBox.Show("Please Select Atleast one Column", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
ItemNo = Convert.ToInt32(lvProducts.SelectedItems[0].Text.ToString());
sql = "";
sql += "SELECT * FROM ProductLog WHERE ProductLog.ItemNo = " + ItemNo + "";
SqlConnection cn = new SqlConnection();
SqlCommand rs = new SqlCommand();
SqlDataReader sdr = null;
clsConnection clsCon = new clsConnection();
clsCon.fnc_ConnectToDB(ref cn);
rs.Connection = cn;
rs.CommandText = sql;
sdr = rs.ExecuteReader();
this.Close();
frmSaleInvoice frm = new frmSaleInvoice(ref sdr);
frm.ShowDialog();
sdr.Close();
rs = null;
cn.Close();
}
,並在frminvoice捕捉數據代碼:
public frmSaleInvoice(ref SqlDataReader sdr)
{
InitializeComponent();
while (sdr.Read())
{
txtProductCode1.Text = Convert.ToString(sdr["ProductCode"]);
}
}
我也試過這個代碼上的選擇按鈕,但它只是不加載任何東西到薩爾Ë發票:
frmSaleInvoice frm = new frmSaleInvoice(ref sdr);
if (frm.Visible)
{
frm.BringToFront();
}
,也曾經嘗試這樣做
frmSaleInvoice frm = new frmSaleInvoice(ref sdr);
frmSaleInvoice.Instance.Show();
我也試圖與frmSaleInvoice.Instance.Show();
傳遞價值,但它不會讓我傳似frmSaleInvoice.Instance.Show(ref sdr);
數據請幫我,我我真的陷入了困境。
- 要麼告訴我如何可以傳遞價值thoguh例如
- 或任何其他方式做到這一點?
任何建議將不勝感激。
謝謝兄弟,非常簡單解決方案...非常感謝:) –