📄 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 + -