PDA

View Full Version : بدست اوردن تخفیف یک مقدار(کم کردن مقداری از مقدار دیگر) به وسیله Text_change تکست باکس



RIG000
یک شنبه 10 مهر 1390, 23:50 عصر
با سلام .
دوستان م ن میخام تخفیف یک قمیمت رو بدست بیارم . بدین صورت که م ن دو تکست باکس دارم یکی تخفیف و یکی قیمت کل . و میخام تخفیف که زده شد در باکس کل به طرو اتوماتیک نشون داده بشه .
حالا مشکل م ن اینه که بر فرض مثال در داخل باکس کل من مقدار 60 رو داشته باشم و بخام ازش 20 رو کم کنم . دستور مورد نظر که تکست چنج باکس تخفیف هست اول 2 رو حساب میکنه میذاره تو باکس کل و میشه 58 و بعدش 0 رو که اضافه میکنم 20 تا از 58 کم میکنه و درباکس کل نشون میده . من مشکلم اینه. کد هم میذارم ببینید .
private void boxtakhfif_TextChanged(object sender, EventArgs e)
{

string s = boxkol.Text;

try
{


boxkol.Text = Convert.ToString(Int64.Parse(s) - Int64.Parse(boxtakhfif.Text));

}
catch (Exception ed)
{
MessageBox.Show(ed.Message);


}

}
من حالا باید چیکار کنم ؟

2ndesigner
دوشنبه 11 مهر 1390, 00:48 صبح
بهتره این کد رو تو روداد keypress قرار بدید یه شرط بذارید که هر وقت کاربر کلید ENTER رو زد این محاسبات انجام بشه.

و یا اینکه در رویداد Enter مقدار کل رو تو یه متغیر ذخیره کنید تا با هر بار اجرا شدن رویداد textchanged مقدار تخفیف از مقدار ذخیره شده کم بشه.

ya30ien2
دوشنبه 11 مهر 1390, 00:49 صبح
شما اینجوری بنویس ببین مشکلت حل میشه
int a,b;
a=int32.parse(boxkol.text);
b=int64.parse(boxtakhfif.text);
messagebox.show(a-b);

RIG000
دوشنبه 11 مهر 1390, 10:28 صبح
شما اینجوری بنویس ببین مشکلت حل میشه
int a,b;
a=int32.parse(boxkol.text);
b=int64.parse(boxtakhfif.text);
messagebox.show(a-b);
اینجوری که تو مسیج باکس نشون میده و حل میشه . اما موضوع اینه که م ن میخام تو خود باکس کل نشون بدم. ممنونو که جواب دادید .
2 در مورد زدن دکمه اینتر هم میدونستم اما حالت خودکارشو نیاز دارم که بدون نیاز به دکمه ای باشه .
ممنون

wolf_majid
دوشنبه 11 مهر 1390, 11:03 صبح
به نظر من توی رویداد خروج (leave) جعبه متن تخفیف این کار را انجام بدید
و در ضمن برای اینکه امکان ویرایش داره به صورت زیر عمل کنید

public Form1()
{
InitializeComponent();
}

Int64 intTakhfif = 0;

private void boxtakhfif_Leave(object sender, EventArgs e)
{
intTakhfif-=Int64.Parse(boxtakhfif.Text);
boxkol.Text = (Int64.Parse(boxkol.Text) + intTakhfif).ToString();
}

private void boxtakhfif_Enter(object sender, EventArgs e)
{
intTakhfif = Int64.Parse(boxtakhfif.Text);
}

wolf_majid
دوشنبه 11 مهر 1390, 11:29 صبح
بهتره این کد رو تو روداد keypress قرار بدید یه شرط بذارید که هر وقت کاربر کلید ENTER رو زد این محاسبات انجام بشه.

و یا اینکه در رویداد Enter مقدار کل رو تو یه متغیر ذخیره کنید تا با هر بار اجرا شدن رویداد textchanged مقدار تخفیف از مقدار ذخیره شده کم بشه.

ببخشید من پست شما رو ندیدم
طبق گفته این دوستمون می تونید به صورت زیر عمل کنید

public Form1()
{
InitializeComponent();
}

Int64 intTakhfif = 0;

private void boxtakhfif_Leave(object sender, EventArgs e)
{
/*
intTakhfif-=Int64.Parse(boxtakhfif.Text);
boxkol.Text = (Int64.Parse(boxkol.Text) + intTakhfif).ToString();
*/
}

private void boxtakhfif_Enter(object sender, EventArgs e)
{
intTakhfif = Int64.Parse(boxkol.Text);
}

private void boxtakhfif_TextChanged(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(boxtakhfif.Text))
boxtakhfif.Text = "0";
boxkol.Text = (intTakhfif - Int64.Parse(boxtakhfif.Text)).ToString();
}