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

نام تاپیک: مشکل در بستن فرم ها

  1. #1

    مشکل در بستن فرم ها

    سلام , من میخوام ی برنامه بنویسم که دوتا فرم داره و در فرم یک یدونه باتن وجود داره , میخوام با کلیک اول فرم دوم باز بشه و با کلیک دوم بسته , به عبارتی به تعداد دفعات زوج فرم دوم بسته بشه و به تعداد دفعات فرد فروم دوم باز بشه .
    من یک متغیر تعین کردم تا به ازای هر بار کلیک یک واحد به اون اضافه بشه و با دستور ایف کاری کردم که همون رابطه دفعات زوج و فرد انجام بشه و برای دستور بستن [ ;()frm.close ] و برای باز شدن [;()frm.show ] .
    اما چی بگم
    این برنامه یچ اروری نداد اما باگ داره و من نمیدونم باگش برای چیه.
    باگ برنامه:با کلیک بر روی باتن تعداد فرم هایی پشته هم ظاهرمیشه اما اون کاری که که میخوام انجام نمیشه.
    لازم به ذکره که من فرم دوم رو در پانل نمایش میدم.

  2. #2

    نقل قول: مشکل در بستن فرم ها

    کدت رو بزار.

  3. #3

    نقل قول: مشکل در بستن فرم ها

    چرا این کد رو نوشتید؟؟ میتونستید خیلی راحت از یک متغیر بولین کمک بگیرید. (1 برای باز بودن فرم دوم و 0 برای عکس اون)

  4. #4

    نقل قول: مشکل در بستن فرم ها

    این متغیری که میگین رو نمیشناسم , میشه ی توضیحی برام بدین

  5. #5

    نقل قول: مشکل در بستن فرم ها

    ;0=int a
    ;++a
    ;()Form4 frm = new Form4
    ;frm.FormBorderStyle = FormBorderStyle.None
    ;frm.Dock = DockStyle.Fill
    ;frm.TopLevel = false



    (1==if(a%2
    }
    ;(panel1.control.add(frm
    ;()frm.show


    {
    else
    }
    ;(panel1.controls.remove(frm
    ;()frm.close
    {
    آخرین ویرایش به وسیله peyman.kh : شنبه 16 شهریور 1398 در 12:56 عصر

  6. #6

    نقل قول: مشکل در بستن فرم ها

    اون دستور رو در رو رویداد کلیک نوشتم

    وقتی این نشد یک راه دیگه هم امتحان کردم:
    با کلیک بر روی دکمه در فرم یک , یک واحد به متغیر a اضافه میشد (من تو این یکی , متغیر a رو public ) تعریف کردم به طوری که با هر بار کلیک در فرم یک, یک واحد به متغیری در فرم چهار اضافه میشد و شرط بسته شدن در فرم چهار و شرط باز شدن فرم4 رو در فرم یک بررسی کردم. اما باز هم جواب نداد.
    نمیدونم مشکل چیه ولی توی اولین کد که امتحان کردم , فقط هردستوری که توی اولین شرطی که برقرار شده وجود داره اجرا میشه .و با کلیک های بعدی که من امتحان کردم باید مقدار a تغیر کنه و یک شرط دیگه برقرار بشه , اما همچین اتفاقی نمیافته , حسابی گیج شدم
    آخرین ویرایش به وسیله peyman.kh : شنبه 16 شهریور 1398 در 12:51 عصر

  7. #7

    نقل قول: مشکل در بستن فرم ها

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

  8. #8

    نقل قول: مشکل در بستن فرم ها

    الان کد رو عوض کردم و دوباره مشکلی شبیه به اون برام پیش اومدبا کلیک اول فرم دو باز میشه و با کلیک دوم هیچ اتفاقی نمی افته و با کلیک سوم دوباره فرم باز میشه , خوب الان من فکر میکنم که مشکل از دستور بستن فرم دوم هستمن از این دستور استفاده میکنم اما جواب نمیده : ;()form2 frm = new form2;()frm.close خوب من مشکل این کد رو نمیدونم که که چرا ارور نداره اما اجرا نمیشه .حتی این کد رو بدون هیچ کد دیگه ای در یک کلید گذاشتم اما جواب نداد.

  9. #9

    مشکل این کد چیه , ارور نداره اما کار نمیکنه

    من دوتا فرم دارم (پدر...form1)(فرزند...form2)
    در فرم یک , یک عدد کلید باتن وجود دارد.
    من میخوام با کلیک های فرد فرم دو باز بشه و با کلیک های زوج بسته.
    در کدی که من گذاشتم برای دستور بستن فرم دو از .... استفاده کردم:
    ;()frm.close
    .
    مشکل اینجاست که دستور جواب نمیده و با کلیک های فرد فرم باز میشه و با کلیک های زوج هیچ اتفاقی نمیافه .
    من به منظور تست دستور بالا رو به application.exit تغییر دادم اما این بار جواب داد و با کلیک زوج کل برنامه بسته شد ولی این چیزی نیست که من میخوام.
    قصد من اینه که فقط فرم 2 بسته بشه.
    این عکس اسکرین شاتی از محیط برنامه و کدها هست.
    عکس های ضمیمه عکس های ضمیمه

  10. #10

    نقل قول: مشکل این کد چیه , ارور نداره اما کار نمیکنه

    دوست عزیز مشکل کد شما این هست که سعی در بستن یک فرم جدید دارید که در اصل از اول آشکار نشده!
    برای حل این مشکل باید فرم های جدید نمایان شده رو در یک نوع متغیر ذخیره کنید که بعدا به همون فرم دسترسی داشته باشید.
    حالا این کار رو میتونید با آرایه، لیست یا هر چیز که به ذهنتون میرسه انجام بدید.
    البته این جا چون هر لحظه حد اکثر یک فرم بازه میتونید بدون آرایه و با یک متغیر هم این کار رو انجام بدید.

  11. #11

    نقل قول: مشکل این کد چیه , ارور نداره اما کار نمیکنه

    راستی اگر کدش رو میخواید اینه:

    childFormNumber++;
    if (childFormNumber % 2 == 1) { cchild = new Form1(); cchild.MdiParent = this; cchild.Show(); } else cchild.Close();

    (یادتون باشه cchild متغیری هست که فرم در اون ذخیره میشه و بیرون از رویداد تعریف میشه، childFormNumber هم همینطور)
    دقت داشته باشید که cchild در حالتی از نو تعریف میشه که کارمون با مقدار قبلیش تموم شده باشه.

  12. #12

    نقل قول: مشکل این کد چیه , ارور نداره اما کار نمیکنه

    اصلا متوجه نمیشم , کدی که گفتید رو نوشتم و جایگزین کد خودم کردم و ارور داد , اگر امکان داره واضح تر توضیح بدین

  13. #13

    نقل قول: مشکل این کد چیه , ارور نداره اما کار نمیکنه

    ببینید، شما یک متغیر میخواستین که عدد اون با هر کلیک دکمه افزایش پیدا کنه. البته من در یک پاسخ دیگه به شما گفتم که از یک متغیر بولین استفاده کنید، حالا به هر دلیل فرض کنیم باید با عدد این کار رو انجام بدیم. اول باید در رویداد کلیک دکمه بنویسیم:
    childFormNumber++

    برای افزایش مقدار متغیرمون این رو مینویسیم.

    مرحلۀ بعدی این طوریه که ما مقدار متغیر رو در نظر میگیریم. اگه مقدارش فرد بود (اولین بار این طوریه) باید متغیر فرم رو برابر یک فرم جدید قرار بدیم. سپس متغیر رو (دقت کنید فرم نه، خود متغیر) آشکار میکنیم:
    cchild.Show();

    البته من یک کد هم برای تنظیم والد نوشتم که به دلیل این بود که شما نوشتید فرم اول پدر است.

    حالا در نظر میگیریم که بار دومه که کلیک میکنیم؛ در این صورت باید فرمی که ایجاد شده رو ببندیم. این جا بود که شما احتمالاً به اشتباه برخوردین.
    شما متغیرتون رو در این حالت هم مقداردهی میکردین به یک فرم جدید که با این کار ارتباط با فرم قبلی رو از دست میدادین.
    در حالی که اگه اینجا متغیر رو بروز نکنیم، ارتباط قطع نمیشه. پس من متغیر رو فقط در موقعی که کلیک ها فرد باشه (یعنی فرم قبلی بسته باشه)، بروز میکنم.
    حالا که ارتباط قطع نشده، من فرم قبلی که در متغیر هنوز هست رو میبندم.

    البته در کل زمانی که چنین کاری رو دقیقا این طوری میخواین، میتونید بدون متغیر انجام بدید و مستقیم با همون فرم کارتون رو انجام بدید.
    یعنی بنویسید:
    if (childFormNumber % 2 == 0) { Form1.MDIParent = this; Form1.Show(); } else Form1.close();
    آخرین ویرایش به وسیله ASHKANLAEI : دوشنبه 18 شهریور 1398 در 16:39 عصر

  14. #14

    نقل قول: مشکل در بستن فرم ها

    اگر از متغیر(frm) استفاده می کنید باید خارج از متد تعریفش کنید.

    یا از openforms استفاده کنید
    https://docs.microsoft.com/en-us/dot...tion.openforms

    یا از الگوی singleton استفاده کنید.

  15. #15

    نقل قول: مشکل در بستن فرم ها

    من ی نگاه به سایت انداختم اما چیزی سر در نیاوردم , من تازه واردم و ممنون میشم از روش های ساده تر این موردو برام شرح بدین. یکم زیر دیپلمی تر
    آخرین ویرایش به وسیله peyman.kh : یک شنبه 17 شهریور 1398 در 16:57 عصر

  16. #16

    نقل قول: مشکل در بستن فرم ها

    خیلی خوب , از ی روش ساده تر من یک متغیر سراسری درست میکنم و برای خروج از فرم از اون استفاده میکنم , طوری که شرط فرد بودن برای باز شدن فرم , در فرم یک انجام بشه , و شرط زوج بودن و بسه شدن فرم دوم , در فرم دوم و با دستور this.close انجام بشه , به نظرتون جواب میده ؟ فقط مسئله ای که هست من اصلا با متغیر های سراسری کارنکردم و واضح بگم بلد نیستم , ی بار هم از تو اینترنت برای استفاده از این متغیر خوندم و انجام دادم اما جواب نداد و من فکرمیکنم هنوز متوجه این متغیر نشدم.ممنون میشم اگه بهم کمک کنید.

  17. #17

    نقل قول: مشکل در بستن فرم ها

    سلام دوباره , روش متغیر public رو تست کردم اما جواب نداد , مقدار متغیر با کلیک بروز نمیشه , روشی برای اینکه اتوماتیک بروز شه هست؟

  18. #18

    نقل قول: مشکل در بستن فرم ها

    مثلا راه دومی که گفتم به اینصورت
            private void button1_Click(object sender, EventArgs e)
    {
    bool form2IsOpened = false;
    Form2 frm2 = null;

    foreach (Form form in Application.OpenForms)
    {
    if (form is Form2)
    {
    form2IsOpened = true;
    frm2 = form as Form2;
    break;
    }
    }

    if (form2IsOpened)
    {
    frm2.Close();
    }
    else
    {
    frm2= new Form2();
    frm2.Show();
    }
    }

  19. #19

    نقل قول: مشکل در بستن فرم ها

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

  20. #20

    نقل قول: مشکل در بستن فرم ها

    کد من که بالا توضیح دادم کار نکرد؟؟ من که تست کرده بودمش

  21. #21

    نقل قول: مشکل در بستن فرم ها

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

تاپیک های مشابه

  1. پاسخ: 4
    آخرین پست: یک شنبه 26 مرداد 1399, 00:59 صبح
  2. جند دسته هستند که در حال تخریب سایت برنامه نویس هستند
    نوشته شده توسط pouyansaraf در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 4
    آخرین پست: سه شنبه 09 تیر 1394, 14:41 عصر

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

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