1.無參數彈出框
首先看圖:如圖所示,點擊設備入庫按鈕,彈出設備入庫窗口
下面來看代碼
當前窗口命名為:EquipImportFrm
新窗口命名為:EquipImportAddFrm
點擊事件中代碼如下
private void btnImport_Click(object sender, EventArgs e) { EquipImportAddFrm frm = new EquipImportAddFrm(); if ( frm.ShowDialog()==DialogResult.OK)//對話框返回值為ok時運行 { btnFind_Click(sender, e); //這個是當前頁面的重新加載的查詢事件 } }
下面是新窗口中的需要注意的代碼
///新頁面的提交方法
private void btnCommit_Click(object sender, EventArgs e) { try { if (!CheckImport())//頁面檢查驗證方法 { return; } int i = 0; i = SaveEquip();//保存頁面信息到對應的表中的方法 if (i == 1) { MessageBox.Show("保存成功!"); this.DialogResult = DialogResult.OK;//對話框的返回值 } else if (i == 2) { MessageBox.Show("沒有修改,無需保存!"); return; } InitDisp(); } catch (Exception ex) { Error.ErrProc(ex); } }
ok這個就是winform彈出對話框的基本代碼。還有一種是需要傳值的彈出。
2.帶參數彈出框
首先我們來看圖
在樹形結構目錄中,點擊要添加的目錄節點,點擊“添加設備分類”按鈕,添加新節點,點擊“添加設備品名”按鈕添加,為當前節點添加設備品名。
下面是代碼
當前頁面是:EquipClassFrm
彈出設備分類編輯頁面為:EquipClassUpdateFrm
/// <summary> /// 添加設備分類 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btNewClass_Click(object sender, EventArgs e) { EquipClassUpdateFrm eqClassFrm = new EquipClassUpdateFrm(); eqClassFrm.CalssCode = classCode;//當前選中目錄節點id if (eqClassFrm.ShowDialog() == DialogResult.OK) { EquipClassFrm_Load(sender, e); } }
在新頁面中EquipClassUpdateFrm,需要添加對應的屬性
private string _calssCode = string.Empty;
/// <summary> /// 物資類別 /// </summary> public string CalssCode { get { return _calssCode; } set { _calssCode = value; } }
由於要初始化新窗體,需要在首次加載新窗體時,初始化頁面
private void EquipClassUpdateFrm_Load(object sender, EventArgs e) { dbInfo = new DbInfo(); initFrm();//初始化界面 } /// <summary> /// 初始化界面 /// </summary> private void initFrm() { if (!string.IsNullOrEmpty(_calssCode)) { txtEqCode.Text = _calssCode; sql = string.Format("SELECT CLASS_NAME FROM EQ_CLASS_DICT WHERE COMMUNITY_CODE={0} AND CLASS_CODE={1}", SQL.SqlConvert(GVars.CommunityCode), SQL.SqlConvert(_calssCode)); txtEqName.Text = dbInfo.GetValueBySql(sql); } }
點擊保存按鈕時
/// <summary> /// 保存 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(txtEqCode.Text.Trim()) || string.IsNullOrEmpty(txtEqName.Text.Trim())) { MessageBox.Show("設備編碼和名稱請填寫完成!", "提示"); return; } if (IsExistEqCode(txtEqCode.Text.Trim())) { dsClassDict = dbInfo.GetTableData("EQ_CLASS_DICT", "1=2"); DataRow drNew = dsClassDict.Tables[0].NewRow(); drNew["COMMUNITY_CODE"] = GVars.CommunityCode; drNew["CLASS_CODE"] = txtEqCode.Text.Trim(); drNew["CLASS_NAME"] = txtEqName.Text.Trim(); if (!string.IsNullOrEmpty(_calssCode)) { drNew["PARENT_ID"] = _calssCode; } else { drNew["PARENT_ID"] = "-1"; } subString = txtInputCode.Text.Trim().ToUpper(); if (subString.Length > 8) { subString = subString.Substring(0, 8); } drNew["INPUT_CODE"] = subString; dsClassDict.Tables[0].Rows.Add(drNew); dbInfo.SaveTableData(dsClassDict.GetChanges()); MessageBox.Show("保存成功!"); this.DialogResult = DialogResult.OK; } else { MessageBox.Show("設備編碼已存在!", "提示"); return; } }