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();
}
}
}