نمایش نتایج 1 تا 10 از 10

نام تاپیک: مشکل در رویداد TextChanged تکست باکس

  1. #1

    مشکل در رویداد TextChanged تکست باکس

    سلام دوستان
    من به ی مشکلی بر خوردم
    تو فرم 3 تا تکست باکس دارم، که هر وقت تو اولی عددی بنویسم بلافاصله با عدد تکست باکس دوم جمع بشه و بره تو تکست باکس سوم
    تکست باکس دوم، مقدار ثابت داره.
    از کد زیر استفاده می کنم



    int num1, num2, sum;
    public string zero = "0";

    private void Number1Txt_TextChanged(object sender, EventArgs e)
    {
    if (salNumberTxt.Text != null)
    {
    num1 = Int32.Parse(Number1Txt.Text);
    num2 = Int32.Parse(Number2Txt.Text);
    sum = num1 + num2;
    SumNumberTxt.Text = sum.ToString();
    }
    else
    {
    Number1Txt.Text = zero;
    SumNumberTxt.Text= zero;
    }
    }

    این کد درست کار می کنه ولی مشکلش اینه که هر وقت بعد از وارد کردن عدد تو تکست اولی بخوام پاکش کن و از نو بنویسمش از int32 خطا می گیره!
    از شرط null بودن هم استفاده کردم ولی باز نمیشه!
    چجوری باید این استثنا رو کنترل کنم؟

  2. #2
    کاربر دائمی آواتار ایمان مدائنی
    تاریخ عضویت
    آذر 1386
    محل زندگی
    تهران
    پست
    1,463

    نقل قول: مشکل در رویداد TextChanged تکست باکس

    شما ميتوني كاري كني كه تكس باكس فقط عدد قبول كنه و در صورت خالي بودن عدد صفر در آن قرار گيرد !
    معمولا براي تكس باكسها عدد همين كار را انجام ميدهند كه وقتي خالي هست در اون 0 باشه
    از Try و Catch استفاده كن كه در زمان وقوع خطا كار مناسب را انجام دهد مثلا 0 قرار دهد

  3. #3

    نقل قول: مشکل در رویداد TextChanged تکست باکس

    شرط رو بصورت زیر تغییر بدید درست میشه.
    if (!String.IsNullOrEmpty(salNumberTxt.Text.Trim()))
    {
    num1 = Int32.Parse(Number1Txt.Text);
    num2 = Int32.Parse(Number2Txt.Text);
    sum = num1 + num2;
    SumNumberTxt.Text = sum.ToString();
    }
    else
    {
    Number1Txt.Text = zero;
    SumNumberTxt.Text = zero;
    }

  4. #4

    Smile نقل قول: مشکل در رویداد TextChanged تکست باکس

    نقل قول نوشته شده توسط Reza_Yarahmadi مشاهده تاپیک
    شرط رو بصورت زیر تغییر بدید درست میشه.
    if (!String.IsNullOrEmpty(salNumberTxt.Text.Trim()))
    {
    num1 = Int32.Parse(Number1Txt.Text);
    num2 = Int32.Parse(Number2Txt.Text);
    sum = num1 + num2;
    SumNumberTxt.Text = sum.ToString();
    }
    else
    {
    Number1Txt.Text = zero;
    SumNumberTxt.Text = zero;
    }
    کدی که گفتین، عالی جواب داد

    فقط تو وارد کردن حروف همون مشکل قبلی رو داره، که اگه روش کار کنم،شاید بتونم رفعش کنم
    در کل ممنونم، لطف کردین

  5. #5
    کاربر دائمی
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    هستیم همین دور و برا
    پست
    120

    نقل قول: مشکل در رویداد TextChanged تکست باکس

    دوست عزیز...بهتره که به این صورت عمل کنین چون مقدار عددی می خواین بگیرین:

    ()convert.ToInt32

    چون
    Int32.Parse(String Value)


    معمولا اینجوری بهتره

  6. #6
    کاربر دائمی آواتار bade saba
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    bargsabzb.ir
    پست
    499

    Thumbs up نقل قول: مشکل در رویداد TextChanged تکست باکس

    نقل قول نوشته شده توسط unknown87s مشاهده تاپیک
    کدی که گفتین، عالی جواب داد

    فقط تو وارد کردن حروف همون مشکل قبلی رو داره، که اگه روش کار کنم،شاید بتونم رفعش کنم
    در کل ممنونم، لطف کردین

    شما برای رفع این مشکل دو تا راه حل داری اول اینکه اجازه ندی در تکس باکس به جز عدد وارد بشه که کدش اونقدر تو همین تالار مطرح شده که با یه سرچ کوچیک پیدا میکنی یا این که اون خط رو در try قرار بدی که در صورتی که به همچین مسئله ای بر خورد در قسمت catch بهش بگی چی کار بکنه

    موفق باشید

  7. #7

    نقل قول: مشکل در رویداد TextChanged تکست باکس

    با سلام اگه بخوایم مقادیر یه سری text box رو تو دو تا ارایه بریزیم چی کار میشه کرد ؟ من از کد زیر استفاده کردم

    int []x=newint[6] ;
    int []y=newint[6] ;
    for (int i = 0; i < 6; i++)
    {
    x[i] =
    Convert.ToInt32((textBox(i+1)).Text);
    y[i] =
    Convert.ToInt32((textBox(i+2)).Text);
    }

    ولی این ارور رو میده
    The name 'textBox' does not exist in the current context
    چی کار باید بکنم ؟ مگه نمیشه یه سری text box رو به صورت ارایه ای مقدار دهی کرد؟

  8. #8

    نقل قول: مشکل در رویداد TextChanged تکست باکس

    يك روش ميتونه بصورت زير باشه
    int[] x = new int[6];
    int[] y = new int[6];
    for (int i = 0; i < 6; i++)
    {
    if (this.Controls.Find("textBox" + (i + 1)).Length > 0)
    x[i] = Convert.ToInt32(this.Controls.Find("textBox" + (i + 1))[0].Text);
    if (this.Controls.Find("textBox" + (i + 2)).Length > 0)
    y[i] = Convert.ToInt32(this.Controls.Find("textBox" + (i + 2))[0].Text);
    }

  9. #9

    نقل قول: مشکل در رویداد TextChanged تکست باکس

    نقل قول نوشته شده توسط unknown87s مشاهده تاپیک
    سلام دوستان
    من به ی مشکلی بر خوردم
    تو فرم 3 تا تکست باکس دارم، که هر وقت تو اولی عددی بنویسم بلافاصله با عدد تکست باکس دوم جمع بشه و بره تو تکست باکس سوم
    تکست باکس دوم، مقدار ثابت داره.
    از کد زیر استفاده می کنم



    int num1, num2, sum;
    public string zero = "0";

    private void Number1Txt_TextChanged(object sender, EventArgs e)
    {
    if (salNumberTxt.Text != null)
    {
    num1 = Int32.Parse(Number1Txt.Text);
    num2 = Int32.Parse(Number2Txt.Text);
    sum = num1 + num2;
    SumNumberTxt.Text = sum.ToString();
    }
    else
    {
    Number1Txt.Text = zero;
    SumNumberTxt.Text= zero;
    }
    }

    این کد درست کار می کنه ولی مشکلش اینه که هر وقت بعد از وارد کردن عدد تو تکست اولی بخوام پاکش کن و از نو بنویسمش از int32 خطا می گیره!
    از شرط null بودن هم استفاده کردم ولی باز نمیشه!
    چجوری باید این استثنا رو کنترل کنم؟

    از tryparse استفاده کن :



    privatevoid textBox1_TextChanged(object sender, EventArgs e)
    {
    Int32 myNum = 0;
    int num1 = 0;
    if (Int32.TryParse(textBox1.Text, out myNum))
    {
    num1 = int.Parse(textBox1.Text);
    }
    else
    MessageBox.Show(" ");
    int num2 = int.Parse(textBox2.Text);
    textBox3.Text = (num1 + num2).ToString();
    }



    این طوری مشکلت حل می شه

    موفق باشید
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله quantomquery : شنبه 04 دی 1389 در 17:45 عصر دلیل: اظافه نمودن ضمیمه

  10. #10
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    پست
    389

    نقل قول: مشکل در رویداد TextChanged تکست باکس

    private void Number1Txt_TextChanged(object sender, EventArgs e)
    {
    try
    {
    if (salNumberTxt.Text != null)
    {
    num1 = Int32.Parse(Number1Txt.Text);
    num2 = Int32.Parse(Number2Txt.Text);
    sum = num1 + num2;
    SumNumberTxt.Text = sum.ToString();
    }
    }
    catch
    {
    Number1Txt.Text = zero;
    SumNumberTxt.Text = zero;
    }
    }

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •