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

نام تاپیک: مشکل در مقدار گرفتن آرایه

  1. #1

    مشکل در مقدار گرفتن آرایه

    سلام دوستان خسته نباشید
    قطعه کد پایین رو ببینید:


    int[] a;
    a =
    newint[10];
    switch (comboBox1.SelectedIndex)
    {
    case 0:
    for (int i = 0; i < 10; i++)
    {
    Form2 frm2 = newForm2();
    frm2.ShowDialog();
    a[i] = num;
    }
    break;
    case 1:
    label2.Text = System.
    Convert.ToString(checkMax(a,10));
    label3.Text = System.
    Convert.ToString(checkMin(a, 10));
    break;


    من یه آرایه نعریف کردم و با استفاده از حلق for مقدارش رو از form2 گرفتم و تو هر عنصرش ریختم
    اما وقتی از حلقه for بیرون میاد تمام مقدار های عناصر صفره....
    num هم در form1 بصورت پایین تعریف شده:

    public
    staticint num;

    مشکل از کجاست؟

  2. #2

    نقل قول: مشکل در مقدار گرفتن آرایه

    سلام،
    اول اینکه بگو دقیقاً می خوای چی کار کنی؟
    توضیح کدت:
    شما تو حلقه For هر بار میای متغیری از نوع Form2 تعریف می کنی و یک نمونه از اون تو حافظه ایجاد می کنی. دفعه بعد که حلقه اجرا می شه باز یه شیء Form2 درست می کنی و Form2 قبلی اصطلاحاً بی صاحب می مونه و Garbage Collector اون رو به صورت یک زباله شناسایی می کنه. البته همه فرم ها نمایش داده می شن.
    ولی نه تای اولی بی صاحب هستند یعنی هیچ متغیری به اونها اشاره نمی کنه.
    متغیرnum هم مقدار صفر داره و تو تمام عناصر آرایه a کپی می شه. نمی دونم هدفت از نوشتن این کدها چیه؟

  3. #3

    نقل قول: مشکل در مقدار گرفتن آرایه

    تو این برنامه یه combobox طراحی شده که گزینه اولش ReadArray هست...یعنی آرایه رو میخونه
    گزینه دوم هم بزرگترین و کوچترین عنصر آرایه رو بر میگردونه...تابع ها مشکلی ندارن چون تست کردم...یعنی به آرایه مقدار اولیه دادم کار کرد.
    خب من میخوام به ده عنصر آرایه a مقدار بدم
    برای اینکار از یه فرم استفاده کردم.در هر حلقه form2 یبار ایجاد میشه و پس از مقدار دهی به num بسته میشه.در حقیقت کد زیر رو پس از فشردن دکمه اوکی اجرا میکنه:

    Form1.num=System.Convert.ToInt32( textBox1.Text);
    this.Close();

    بعد دوباره مقدار عنصر بعدی رو میگیره الی آخر...
    الان مشکل اینجاست که بعد بیرون اومدن از حلقه عناصر آرایه همگی صفر هستن در صورتی که تو حلقه به تک تکشون مقدار داده شده.
    چک کردم بعد از مقدار دادن عناصر مقدار رو گرفتن اما وقتی از حلقه بیرون میاد همه صفر هستن...

  4. #4

    نقل قول: مشکل در مقدار گرفتن آرایه

    ببین من اینطوری متوجه شدم که شما می خوای یک فرم رو باز کنی و از Textbox یه مقدار رو بگیری. و این کار رو 10 بار انجام بدی و در نهایت Min و Max رو داخل دو TextBox نمایش بدی. اگه درست می گم تایید کن تا بریم جلوتر.

  5. #5

    نقل قول: مشکل در مقدار گرفتن آرایه

    آره من میخوام از طریق form2 ده مقدار رو بگیرم و در ده عنصر آرایه بریزم
    بعد با استفاده از تابع max و min دو مقدار بازگشتی رو تو لیبل ها بریزم

  6. #6

    نقل قول: مشکل در مقدار گرفتن آرایه

    خوب اول اینکه اگه حتماً می خوای برای گرفتن یه مقدار یه فرم باز بشه قضیه اینطوری میشه:
    یه فرم داریم که توش بازدن یه دکمه قراره 10 تا فرم باز بشه یعنی فرم مادر. کد مربوط به Click دکمه اینه:
    فرم مادر یه فیلد آرایه ای به نام num[10] داره. که static نیست و public هست.

    خارج از حلقه For:
    Form2[] frm=new Form2[10];
    داخل حلقه For باید اینطوری بنویسی:
    frm.FormClosed+=new delegate {frmMother.num[i]=text1.text;};
    frm[i].Show();

    البته Convert text رو خودت انجام بده.
    همین.

  7. #7

    نقل قول: مشکل در مقدار گرفتن آرایه

     
    یه فرم داریم که توش بازدن یه دکمه قراره 10 تا فرم باز بشه یعنی فرم مادر.

    ببینید تو فرم مادر ما یه combobox + یه دکمه داریم
    فرض میکنیم کاربر گزینه خواندن آرایه رو کلیک کنه:
    ابتدا یه آرایه با طول 10 تعریف میشه:

    int[] a;
    a = newint[10];


    بعد به کیس مورد نظر تو سوییچ میره:

    for (int i = 0; i < 10; i++)
    {
    Form2 frm2 = newForm2();
    frm2.ShowDialog();
    a[i] = num;
    }


    تو اینجا showdialog شده یعنی تا بسته نشدن فرم جدید ادامه دستوراتفرم مادر انجام نمیشه
    تو فرم جدید کاربر یه عدد وارد میکنه
    این عدد در متغیر num که یه مقدار صحیح هست ریخته میشه.
    بعد فرم بسته میشه
    متغیر نام در خونه مورد نظر از آرایه ریخته میشه
    اینا تا اینجا درسته
    مشکل اینه که بعد از خروج از حلقه فور
    تمام مقادری آرایه صفر میشه

  8. #8

    نقل قول: مشکل در مقدار گرفتن آرایه

    من فرض کردم که تو فرم مادر یه فیلد داری که آرایه 10 عنصری num هست که قرار مقادیر 10 فرم رو بگیره. چطوری؟ با کلیک دکمه ابتدا این کد اجرا میشه:
    Form2[] frm=new Form2[10];
    یعنی یه متغیر 10 عنصری از نوع Form2. حالا تو حلقه For هر 10 تام فرم باید باز بشه و مقدار رو بگیره. برای این کار فرم رو Show می کنی. قبل از اون باید تو رویداد FormClosed کدی بنویسی که اگه کاربر فرم رو بست مقدار TextBox اون فرم تو num فرم مادر قرار بگیره که کدش رو نوشتم. البته یه مسئله ای هست اونم اینه که هر 10 تا فرم احتمالاً با هم باز می شن. با ShowModal تست کن ببین اینطوری میشه یا نه. کجای قضیه برات مبهمه؟
    آخرین ویرایش به وسیله tooraj_azizi_1035 : چهارشنبه 15 دی 1389 در 11:29 صبح

  9. #9

    نقل قول: مشکل در مقدار گرفتن آرایه

    مرسی دوست عزیز
    یکی از مشکلات این بود که آرایه رو تو کلاس دکمه تعریف کرده بودم.
    مشکل حل شد.

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

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