using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using PTMedicalInsurance.Variables; namespace PTMedicalInsurance.Forms { public partial class SettlementInfoIP : Form { public decimal hisSumAmt { get; set; } public decimal hisPreAmt { get; set; } public decimal acctPayAmt { get; set; } public decimal insuAmt { get; set; } public decimal cashpayAmt { get; set; } public SettlementInfoIP(string hisAmt,string hisPreAmt) { InitializeComponent(); this.StartPosition = FormStartPosition.CenterParent; edt_HisSumAmt.Text = hisAmt; edt_PreAmt.Text = hisPreAmt; } public void SettleMentAmt() { if (IsMoney(edt_AcctPayAmt.Text) == false) { MessageBox.Show("请重新输入正确的医保个人账户支付金额"); return; } if (IsMoney(edt_InsuAmt.Text) == false) { MessageBox.Show("请重新输入正确的医保基金支付金额"); return; } hisSumAmt = decimal.Parse(edt_HisSumAmt.Text); hisPreAmt = decimal.Parse(edt_PreAmt.Text); acctPayAmt = decimal.Parse(edt_AcctPayAmt.Text); insuAmt = decimal.Parse(edt_InsuAmt.Text); edt_cashPayAmt.Text = (Math.Abs(hisSumAmt) - Math.Abs(hisPreAmt) - Math.Abs(acctPayAmt) - Math.Abs(insuAmt)).ToString(); } private void btnOK_Click(object sender, EventArgs e) { if (IsMoney(edt_AcctPayAmt.Text) == false) { MessageBox.Show("请重新输入正确的医保个人账户支付金额"); return; } if (IsMoney(edt_InsuAmt.Text) == false) { MessageBox.Show("请重新输入正确的医保基金支付金额"); return; } if (double.Parse(edt_HisSumAmt.Text) <= 0) { MessageBox.Show("该患者住院费用总额异常,请检查!"); return; } hisSumAmt = decimal.Parse(edt_HisSumAmt.Text); hisPreAmt = decimal.Parse(edt_PreAmt.Text); acctPayAmt = decimal.Parse(edt_AcctPayAmt.Text); insuAmt = decimal.Parse(edt_InsuAmt.Text); //cashpayAmt = double.Parse(edt_cashPayAmt.Text); cashpayAmt = Math.Abs(hisSumAmt) - Math.Abs(hisPreAmt) - Math.Abs(acctPayAmt) - Math.Abs(insuAmt); if (cashpayAmt < 0) { MessageBox.Show("【HIS总金额" + hisSumAmt.ToString() + "】-【预交金额" + hisPreAmt.ToString() + "】-【医保基金支付金额" + insuAmt.ToString() + "】-【医保个人账户支付金额" + acctPayAmt.ToString() + "】= 【现金支付金额" + cashpayAmt.ToString() + "】,现金支付金额小于0,请检查!"); return; } this.DialogResult = DialogResult.OK; } private void btnCancel_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; } public static bool IsMoney(string input) { string pattern = @"^\-{0,1}[0-9]{0,}\.{0,1}[0-9]{1,}$"; return System.Text.RegularExpressions.Regex.IsMatch(input, pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase); } private void edt_InsuAmt_KeyPress11(object sender, KeyPressEventArgs e) { //允许输入数字、小数点、删除键和负号 if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != (char)('.') && e.KeyChar != (char)('-')) { MessageBox.Show("请输入正确的数字"); this.edt_InsuAmt.Text = "0.00"; e.Handled = true; } if (e.KeyChar == (char)('-')) { if (edt_InsuAmt.Text != "") { MessageBox.Show("请输入正确的数字"); this.edt_InsuAmt.Text = "0.00"; e.Handled = true; } } //小数点只能输入一次 if (e.KeyChar == (char)('.') && ((TextBox)sender).Text.IndexOf('.') != -1) { MessageBox.Show("请输入正确的数字"); this.edt_InsuAmt.Text = "0.00"; e.Handled = true; } //第一位不能为小数点 if (e.KeyChar == (char)('.') && ((TextBox)sender).Text == "") { MessageBox.Show("请输入正确的数字"); this.edt_InsuAmt.Text = "0.00"; e.Handled = true; } //第一位是0,第二位必须为小数点 if (e.KeyChar != (char)('.') && ((TextBox)sender).Text == "0") { MessageBox.Show("请输入正确的数字"); this.edt_InsuAmt.Text = "0.00"; e.Handled = true; } //第一位是负号,第二位不能为小数点 if (((TextBox)sender).Text == "-" && e.KeyChar == (char)('.')) { MessageBox.Show("请输入正确的数字"); this.edt_InsuAmt.Text = "0.00"; e.Handled = true; } } #region 控制只能输入整数或小数(供TextBox注册KeyPress事件) /**//// /// 控制只能输入整数或小数 /// (小数位最多位4位,小数位可以自己修改) /// /// /// private void Txb_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (!(((e.KeyChar >= '0') && (e.KeyChar <= '9')) || e.KeyChar <= 31)) { if (e.KeyChar == '.') { if (((TextBox)sender).Text.Trim().IndexOf('.') > -1) e.Handled = true; } else e.Handled = true; } else { if (e.KeyChar <= 31) { e.Handled = false; } else if (((TextBox)sender).Text.Trim().IndexOf('.') > -1) { if (((TextBox)sender).Text.Trim().Substring(((TextBox)sender).Text.Trim().IndexOf('.') + 1).Length >= 4) e.Handled = true; } } } #endregion private void SettlementInfoIP_Load(object sender, EventArgs e) { SettleMentAmt(); edt_InsuAmt.Focus(); edt_InsuAmt.SelectAll(); } private void edt_AcctPayAmt_MouseLeave(object sender, EventArgs e) { SettleMentAmt(); } private void edt_InsuAmt_MouseLeave(object sender, EventArgs e) { SettleMentAmt(); } } }