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

نام تاپیک: مشکل با متد showdialog

  1. #1
    کاربر دائمی آواتار peymannaji
    تاریخ عضویت
    مهر 1385
    محل زندگی
    تو یکی از صفرهای گوگل ...
    پست
    881

    Tick مشکل با متد showdialog

    با سلام
    فرض کنید یک فرم دارم با نام A و یک فرم دیگه با نام B . حالا از فرم A فرم B رو با متد showdialog باز میکنم حالا اگه تو فرم B یک تکست باکس وجود داشته باشه و من توش چیزی بنویسم و سپس فرم رو ببندم و دوباره با متد showdialog از فرم A بازش کنم میبینیم که متنی که در تکست باکس نوشته بودم هنوز هم هست . برای اینکه مشکل حل بشه تو رویدادFormClosing مربوط به این فرم B دستور me.Dispose رو نوشتم که مشکل حل شد اما موقع بستن صفحه یک حالتی مثل پرش داره و یا یه چیزی تو این مایه ها که نمیخوام این حالت پیش بیاد بنظر شما بهترین راه حل چه چیزی میتونه باشه برای مشکل اول؟

    با تشکر

  2. #2
    چون me.Dispose نوشتی این مشکل پیش امده
    میتونی فقط خود Textbox خالی کنی
    معمولا تو FormLoad هه چیز صفر میکنند که مشکل پیش نیاد

  3. #3
    کاربر دائمی آواتار peymannaji
    تاریخ عضویت
    مهر 1385
    محل زندگی
    تو یکی از صفرهای گوگل ...
    پست
    881
    بله این راه هم مد نظر بنده هست اما از اونجایی که پروژم فرم زیادی داره و در هر فرم کلی کنترل هست یکم وقت گیر هست که بخوام این کارو انجام بدم حالا بنظر شما تنها راه و منطقی ترین راه همین روش شماست ؟

  4. #4
    کاربر دائمی آواتار ezamnejad
    تاریخ عضویت
    آبان 1386
    محل زندگی
    جلوي مانيتور
    پست
    257
    هر بار یک نمونه جدید از فرم b ایجاد کنید

    Dim n As New b
    n.ShowDialog()

  5. #5
    نقل قول نوشته شده توسط peymannaji مشاهده تاپیک
    بله این راه هم مد نظر بنده هست اما از اونجایی که پروژم فرم زیادی داره و در هر فرم کلی کنترل هست یکم وقت گیر هست که بخوام این کارو انجام بدم حالا بنظر شما تنها راه و منطقی ترین راه همین روش شماست ؟
    در هر صورت بعد از هر عملیات باید یه سیری(یا همه)فیلد ها خالی بشن
    بهتر یه تابع بنویسی تو هر فرم که مثلا وقتی دکمه جدید زده میشه یه دکمه ثبت زده میشه اون تابع بعد از انجام همه عملیات فراخوانی شه

  6. #6
    کاربر جدید
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    سن
    36
    پست
    29
    توی vb.net نمیخواد نگران مدیریت حافظه و آبجکت هایی که ساختی باشی.
    هر بار فرم رو از اول بساز

    هر بار یک نمونه جدید از فرم b ایجاد کنید
    Garbage Collector خودش حافظه رو آزاد میکنه.

    البته اگر این فرم زیاد باز و بسته میشه یعنی زیاد از اون آبجکت میسازی و در هر بار ایجاد فرم کد زیادی رو اجرا میکنی بهتره فقط یک نمونه از فرم b در فرم a بسازی و در موقع لود شدن فرم b کل کنترلهات رو با مقدارهای پیش فرض مقدار دهی کنی .

  7. #7
    میتونم بپرسم چه طوری؟با چه دستوری؟

  8. #8
    مثلاً اگه n تا TextBox داخل یه Panel داری از کد زیر در فرم لود استفاده کن
    foreach (TextBox tb in panel1.Controls)
    {
    tb.Text = String.Empty;
    }

  9. #9
    کاربر جدید
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    سن
    36
    پست
    29
    اگر همه textbox هایی که در فرم B داری داخل ریشه فرم و یا داخل ریشه یک ContainerControl (مثلا panel یا groupbox)باشند این راه حل جواب میده:

    اگه n تا TextBox داخل یه Panel داری از کد زیر در فرم لود استفاده کن
    ولی اگر همه کنترلهات تو یه سطح نیستند این راه حل بهت جواب نمیده بهتره حتی اگر 40 تا textbox هم داری تو یک تابع یکی یکی خالیشون کنی.مثل کد زیر:


    txtName.Text=string.Empty
    txtFamily.Text=string.Empty
    txtID.Text=string.empty
    ...

  10. #10
    کاربر دائمی آواتار peymannaji
    تاریخ عضویت
    مهر 1385
    محل زندگی
    تو یکی از صفرهای گوگل ...
    پست
    881
    با تشکز از همه دوستان ...

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

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