?? warrentinput.cs
字號:
if ( myHitTest.Type == System.Windows.Forms.DataGrid.HitTestType.Cell )
gridMouseDownTime = DateTime.Now;
}
//------------處理鼠標在dataGrid上的單擊事件-----------
private void TextBoxMouseDownHandler(object sender, MouseEventArgs e )
{
//第一個判斷條件:在單元格的textbox中的雙擊(即單擊DataCell,使它獲得焦點后,然后再響應該Cell中的雙擊事件)
//第二個判斷條件:DataGrid 的 DoubleClick(直接雙擊Cell就響應雙擊事件,無須先單擊Cell,使它獲得焦點,然后再響應雙擊事件)
//判斷時間間隔是否小于控制面板中所定義的雙擊間隔時間
if((e.Button == MouseButtons.Left && e.Clicks == 2 || DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))&&(this.enableDoubleClick==true))
{
this.doubleClicked();
}
}
//-------雙擊分錄表表格,添加新的分錄數據-----------
private void doubleClicked()
{
newTable.Rows.Add(newTable.NewRow()); //向表中添加一行,保持總有一個新行
SelectSubject newFrm=new SelectSubject();
newFrm.ShowDialog();
int rowNumber=dataGrid2.CurrentCell.RowNumber;
dataGrid2[rowNumber,0]=mID;
dataGrid2[rowNumber,1]=mName;
dataGrid2[rowNumber,2]="0";
dataGrid2[rowNumber,3]="0";
SendKeys.Send("{Tab}");//向活動應用程序發送Tab鍵,跳到下一控件
}
//------------計算輸入的分錄表借貸總額-------------
private void dataGrid2_CurrentCellChanged(object sender, System.EventArgs e)
{
if(this.enableDoubleClick==true)
{
int rowCount=newTable.Rows.Count;
decimal debit=0;
decimal loan=0;
for(int i=0;i<rowCount;i++)
{
if(dataGrid2[i,2]!=DBNull.Value)
{
debit+=Convert.ToDecimal(dataGrid2[i,2]);
loan+=Convert.ToDecimal(dataGrid2[i,3]);
}
}
txt9.Text=debit.ToString();
txt10.Text=loan.ToString();
}
}
//--------------工具欄事務處理----------------
private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if (e.Button.ToolTipText == "首記錄")
{
this.dataGrid1.UnSelect(cmOrders.Position); //取消原選中的行
cmOrders.Position = 0;
this.dataGrid1.Select(cmOrders.Position); //選中當前行
this.dataGrid1.CurrentRowIndex = cmOrders.Position; //移動表頭指示圖標
return;
}
if (e.Button.ToolTipText == "上一記錄")
{
if (cmOrders.Position >= 0)
{
this.dataGrid1.UnSelect(cmOrders.Position);
cmOrders.Position--;
this.dataGrid1.Select(cmOrders.Position);
this.dataGrid1.CurrentRowIndex = cmOrders.Position;
}
return;
}
if (e.Button.ToolTipText == "下一記錄")
{
if (cmOrders.Position <= cmOrders.Count-1)
{
this.dataGrid1.UnSelect(cmOrders.Position);
cmOrders.Position++;
this.dataGrid1.Select(cmOrders.Position);
this.dataGrid1.CurrentRowIndex = cmOrders.Position;
}
return;
}
if (e.Button.ToolTipText == "尾記錄")
{
this.dataGrid1.UnSelect(cmOrders.Position);
cmOrders.Position = cmOrders.Count-1;
this.dataGrid1.Select(cmOrders.Position);
this.dataGrid1.CurrentRowIndex = cmOrders.Position;
return;
}
if(e.Button.ToolTipText=="新增")
{
cmOrders.AddNew();
//設置按鈕
SetModifyMode(true);
//設置默認值
//查詢當前會計期間
string strConn = "workstation id=localhost;Integrated Security=SSPI;database=caiwubook";
SqlConnection cn=new SqlConnection(strConn);
cn.Open();
SqlCommand cmd=cn.CreateCommand();
cmd.CommandText="select 取值 from 系統參數表 where 參數名稱='當前會計期間'";
txt7.Text=cmd.ExecuteScalar().ToString();//讀入當前會計期間
//自動計算最大編號
cmd.CommandText="select max(憑證編號) 最大編號 from 憑證表";
object maxResult=cmd.ExecuteScalar();
int maxID=1;
if(maxResult!=System.DBNull.Value)//如果當前憑證表為空,則新編號為000001
maxID=Convert.ToInt32(maxResult)+1;
int length=maxID.ToString().Length;
switch(length)
{
case 1:
txt4.Text="00000"+maxID.ToString();
break;
case 2:
txt4.Text="0000"+maxID.ToString();
break;
case 3:
txt4.Text="000"+maxID.ToString();
break;
case 4:
txt4.Text="00"+maxID.ToString();
break;
case 5:
txt4.Text="0"+maxID.ToString();
break;
}
txt5.Text=DateTime.Now.ToShortDateString();//當前時間
txt8.Text="未過";//新增憑證的狀態都是"未過"
comboBox1.SelectedText="收";//設置憑證字號
//允許雙擊分錄表表格添加分錄數據
this.enableDoubleClick=true;
dataGrid2.ReadOnly=false;
DataGridStateControl();
newTable.Clear();
}
if(e.Button.ToolTipText=="修改")
{
SetModifyMode(true);
this.enableDoubleClick=true;
dataGrid2.ReadOnly=false;
}
if(e.Button.ToolTipText=="刪除")
{
DialogResult result=MessageBox.Show("將刪除憑證記錄以及下屬的分錄信息,是否確認?","刪除數據",MessageBoxButtons.OKCancel);
if(result==DialogResult.OK)
if(cmOrders.Count>0)
{
try
{
string strConn = "workstation id=localhost;Integrated Security=SSPI;database=caiwubook";
SqlConnection cn=new SqlConnection(strConn);
cn.Open();
SqlCommand cmd=cn.CreateCommand();
cmd.CommandText="delete from 分錄表 where 憑證編號='"+txt4.Text+"'";//刪除分錄記錄
cmd.ExecuteNonQuery();
cmOrders.RemoveAt(cmOrders.Position);
da1.Update(dataSet11);
}
catch(Exception express)
{
MessageBox.Show(express.ToString(),"錯誤",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
}
else
MessageBox.Show("表中為空,已無可刪除數據","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
if(e.Button.ToolTipText=="提交")
{
if(txt9.Text!=txt10.Text)
{
MessageBox.Show("借貸雙方不平衡,請檢查并修改分錄數據后重新輸入","錯誤",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
cmOrders.EndCurrentEdit();//結束當前編輯操作并提交修改
int rowCount=newTable.Rows.Count;
if(rowCount==0)
{
MessageBox.Show("請先輸入憑證表分錄數據后再保存","警告",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
try
{
if (dataSet11.GetChanges()!=null)
{
this.da1.Update(dataSet11);//首先,先保存憑證信息
}
string strConn = "workstation id=localhost;Integrated Security=SSPI;database=caiwubook";
SqlConnection cn=new SqlConnection(strConn);
cn.Open();
SqlCommand cmd=cn.CreateCommand();
cmd.CommandText="delete from 分錄表 where 憑證編號='"+txt4.Text+"'";
cmd.ExecuteNonQuery();//其次,再將該憑證信息對應的分錄記錄刪除
for(int i=0;i<rowCount;i++)//最后,再逐行重新插入分錄數據
{
if(dataGrid2[i,0].ToString().Trim()!="")//如該行數據為空,則不保存該行
{
cmd.CommandText="insert into 分錄表([憑證編號], [摘要], [科目代碼], [借方], [貸方]) "
+"values('"+txt4.Text+"','"+dataGrid2[i,4].ToString()+"','"+dataGrid2[i,0].ToString()
+"',CAST('"+dataGrid2[i,2].ToString()+"'as money),CAST('"+dataGrid2[i,3].ToString()+"' as money))";
cmd.ExecuteNonQuery();
}
}
this.enableDoubleClick=false;
}
catch(Exception express)
{
MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
dataSet11.RejectChanges();
}
SetModifyMode(false);
return;
}
if (e.Button.ToolTipText == "取消")
{
try
{
cmOrders.CancelCurrentEdit(); //取消編輯
SetModifyMode(false);
if(txt4.Text.Trim()!="")//恢復顯示明細信息
{
da2.SelectCommand.Parameters[0].Value=txt4.Text.Trim();
newTable.Clear();
da2.Fill(newTable);
dataGrid2.ReadOnly=true;
}
}
catch(Exception express)
{
MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
return;
}
if(e.Button.ToolTipText=="退出")
{
this.Close();
}
}
//--------------對控件的屬性做設置---------------
private void SetModifyMode(bool blnEdit)
{
//設置文本框和下拉列表框屬性
txt4.ReadOnly=!blnEdit;
txt5.ReadOnly=!blnEdit;
comboBox1.Enabled=blnEdit;
//設置搜索按鈕屬性
btnSearch.Enabled=!blnEdit;
//設置兩個表格的ReadOnly屬性
dataGrid1.ReadOnly=!blnEdit;
dataGrid2.ReadOnly=!blnEdit;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -