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

نام تاپیک: گرفتن مقدار از یک تکست باکس وقتی که ...

  1. #1

    Tick گرفتن مقدار از یک تکست باکس وقتی که ...

    با سلام
    خواستم با استفاده از property مقداری را از یک تکست باکس وقتی که تغییر می کنه را بگیرم ، در غیر این صورت مقدار پیش فرض را به ما نشون بده :


    private int Number = 45;


    public int GetNumber
    {
    get
    {
    return Number;
    }
    set
    {
    Number = value;
    }
    }

    در رویداد button1 میخوام وقتی که مقدار TextBox1.Text تغییر می کنه را به ما نشون بده ، در غیر این صورت مقدار پیش فرض را به ما نشون بده :

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    this.GetNumber = Convert.ToInt32(textBox1.Text);
    }

    و در رویداد button1 :
            private void button1_Click(object sender, EventArgs e)
    {
    کـــــــد ؟
    }

    با تشکر از لطف دوستان

  2. #2
    منظورتون از مقدار پیش فرض چیه؟ من منظورتون رو متوجه نمیشم.
    در کد شما با هر تغییری در TextBox مقدار GetNumber تغییر میکنه و در واقع مقدار TextBox در GetNumber قرار میگیره.
    حالا بعدش می خواهید وقتی Button کلیک میشه چه اتفاقی بیفته؟

  3. #3
    ببین مقدار پیش فرض من همان عدد 45 است که در بالا نوشتم . این مقدار را می توانیم با یک MessageBox نشون بدیم . حال منظورم اینه اگر کاربر هیچ عددی را در داخل TextBox وارد نکرد ، یعنی هیچ تغییری در درون TextBox که مقداری نداره ، ایجاد نکنه ، مقدار پیش فرض یعنی عدد 45 را به ما نشون بده ، در غیر این صورت عددی را که کاربر وارد کرده را به ما نشون بده ( عدد را با یه MessageBox نشون بده هم کافی است ) . این کار را می خوام با این Property انجام بدم ( درون رویداد button)
    با تشکر از لطف شما

  4. #4
    آقای رضوی ، مشکل تا حدی حل شد ، ولی یه مشکل دیگه پیدا شد !
    من توی رویداد:

            private void button1_Click(object sender, EventArgs e)
    {
    MessageBox.Show(GetNumber.ToString());

    }

    نوشتم و لی وقتی مقدار داخل TextBox پاک می شود error با توجه به اینکه مقدار TextBox خالی شده ، نمی تواند آنرا به عدد تبدیل کنه یا فرمت درستی برای تبدیل نمی باشد ، را می ده .

  5. #5
    رویداد تغییر متنت رو بصورت زیر تغییر بدید


    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    if(string.IsNullOrEmpty(textBox1.Text))
    this.GetNumber = 45;
    else
    this.GetNumber = Convert.ToInt32(textBox1.Text);
    }

  6. #6
    ببین این کارت رو راه نمیندازه:
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    try
    {
    this.GetNumber = Convert.ToInt32(textBox1.Text);
    }
    catch (Exception)
    {
    this.GetNumber = 45;
    }
    }

  7. #7
    آقای رضوی ببخشید که فضولی کردیم ها. وقتی جواب رو فرستادم دیدم شمام جواب دادین.

  8. #8
    خواهش میکنم روح الله جان .هدف کمک کردنه من و شما نداره . موفق باشید

  9. #9
    آقی رضوی ، دست شما درنکنه ، از لطف شما و پاسخ آقای روح ا... . حقیقتش من هر دو راه از قبل تست کردن و اتفاقا جواب هم میده ، هیچ مشکلی از این بابت نداریم ، ولی یه موضوعی که من کمی گیج شدم اینه خوب ، ما به متغیر Number در ابتدا عدد دادیم ، یعنی initialize کردیم ، چرا باید مجددا باید به اش عدد بدیم . این کار کمی ایراد داره ، درسته که وقتی مقدار تکست باکس تغییر می کنه ، این مقدار را داخل متغییر number قرار می ده ، منظورم این بود که نمی شه کاری کرد که مجددا به اش عدد ندیم یعنی یه جوری شبیه این :

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    if(string.IsNullOrEmpty(textBox1.Text))
    this.GetNumber = Number;
    else
    this.GetNumber = Convert.ToInt32(textBox1.Text);
    }

    ممنون از راهنمایی تان

  10. #10
    شما نمی تونید اینکار رو انجام بدید چونکه شما با هر تغییر در Textbox دارید مقدار Number رو تغییر میدید. میتونید اینکار رو بکنید


    private int Number = 0;
    public int GetNumber
    {
    get
    {
    return Number;
    }
    set
    {
    if(value==0)
    Number =45;
    else
    Number = value;
    }
    }


    و رویدادتون هم بدینصورت تغییر بدید


    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    if(string.IsNullOrEmpty(textBox1.Text))
    this.GetNumber = 0;
    else
    this.GetNumber = Convert.ToInt32(textBox1.Text);
    }

  11. #11
    به هر حال از راهنمایی شما بسیار ممنونم

  12. #12
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    ۱) استاندارد کد نویسی برایه پروپرتی استفاده از پیشوند m_ قبل از فیلد پرایوت است.
    ۲) نام پروپرتی Get ندارد، اینگونه تعریف در جاوا رایج است چونکه معادل پروپرتی سی‌شارپ را ندارند.
    ۳ـ استفاده از ۰ برایه پیدا کردن اینکه در تکست باکس چیزی وارد شده و یا نه درست نیست. به اینگونه اعداد که همینطوری در برنامه تعریف و استفاده میشوند اعداد سحر آمیز گفته
    میشه (چونکه استفاده ازشان منطقی نیست!)
    ۴ـ از TryParse استفاده کردن کافی است:


    string textbox1;
    private const int m_defaultNumber = 45;
    public int Number
    {
    get {
    int result;
    if (int.TryParse(textbox1.Text, result))
    {
    return result;
    }
    else return m_defaultNumber;
    }
    set {
    textbox1.Text = value.ToString();
    }
    }


    ۵ـ احتیاجی به دادن مقدار در روادید نیست، چونکه مقدار از تکست باکس گرفته میشه.

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

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