none
ניווט בתוך ArrayList שפשוט משגע אותי כל היום RRS feed

  • שאלה

  • אני יושב כבר מחמש בבוקר ואני פשוט לא מוצא את הטעות שלי בקוד.

    מה שאני רוצה לעשות זה כך: 5 שדות טקסט ושני כפתורים (הבא והקודם) בכל חיצה על הבא אני לוקח את כל שדות הטקסט ומכניס כל שדה ל ArrayList נפרד ואז אחרי הכנסה של נגיד 5-10 טקסטים אני רוצה להצליח לנווט בתוך ה-ArrayList עם הכפתורים הבא והקודם כך שכשאני מגיע לראשון זה נעצר וכשאני מגיע לאחרון זה מציג לי שדות ריקים כדי להכניס עוד טקסטים ל-ArrayList.

    הקוד שלי נראה כך : ואני אשמח אם מישהו יעזור לי למצוא את הטעות שלי.

    זה מצליח לנווט אבל עם הרבה שגיאות.

    using System;using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Collections;
    namespace TestBlaBla
    {
        public partial class Test : Form
        {
            ArrayList Question = new ArrayList();
            ArrayList AnswerA = new ArrayList();
            ArrayList AnswerB = new ArrayList();
            ArrayList AnswerC = new ArrayList();
            ArrayList AnswerD = new ArrayList();
            public int count = 0;
            public int numberOfQ;
            public MainNewTest()
            {
                InitializeComponent();
            }
            private void MainNewTest_Load(object sender, EventArgs e)
            {
            }
            private void buttonNext_Click(object sender, EventArgs e)
            {
                if (textBoxQ.Text == "" || textBoxA1.Text == "" || textBoxA2.Text == "" || textBoxA3.Text == "" || textBoxA4.Text == "")
                {
                    
                }
                else
                {
                    
                    if (Question.Count > count)
                    {
                        textBoxQ.Text = Question[count].ToString();
                        textBoxA1.Text = AnswerA[count].ToString();
                        textBoxA2.Text = AnswerB[count].ToString();
                        textBoxA3.Text = AnswerC[count].ToString();
                        textBoxA4.Text = AnswerD[count].ToString();
                    }
                    else
                    {
                        Question.Add(textBoxQ.Text);
                        AnswerA.Add(textBoxA1.Text);
                        AnswerB.Add(textBoxA2.Text);
                        AnswerC.Add(textBoxA3.Text);
                        AnswerD.Add(textBoxA4.Text);
                        textBoxQ.Text = "";
                        textBoxA1.Text = "";
                        textBoxA2.Text = "";
                        textBoxA3.Text = "";
                        textBoxA4.Text = "";
                    }
                    count++;
                }
            }
            private void buttonBack_Click(object sender, EventArgs e)
            {
                if (count > 0)
                {
                    count--;
                    textBoxQ.Text = Question[count].ToString();
                    textBoxA1.Text = AnswerA[count].ToString();
                    textBoxA2.Text = AnswerB[count].ToString();
                    textBoxA3.Text = AnswerC[count].ToString();
                    textBoxA4.Text = AnswerD[count].ToString();
                }
            }
        }
    }

    יום חמישי 31 ינואר 2013 06:09

תשובות

  • הקוד שלהלן הוא שיפור של הקוד שלך.

    הגישה הכללית טעונה שיפור, אבל לקחתי את הקוד שלך כנקודת מוצא.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Collections;
    
    namespace Questions
    {
        public partial class Test : Form
        {
            ArrayList Question = new ArrayList();
            ArrayList AnswerA = new ArrayList();
            ArrayList AnswerB = new ArrayList();
            ArrayList AnswerC = new ArrayList();
            ArrayList AnswerD = new ArrayList();
            public int count = -1;
            public int numberOfQ=3;
            
            public Test()
            {
                InitializeComponent();
            }
            
            private void buttonNext_Click(object sender, EventArgs e)
            {
                if (textBoxQ.Text == "" || textBoxA1.Text == "" || textBoxA2.Text == "" || textBoxA3.Text == "" || textBoxA4.Text == "")
                {
                    
                }
                else
                {
                    if (Question.Count >= numberOfQ)
                        if (count < Question.Count-1)
                        {
                            count++;
                            textBoxQ.Text = Question[count].ToString();
                            textBoxA1.Text = AnswerA[count].ToString();
                            textBoxA2.Text = AnswerB[count].ToString();
                            textBoxA3.Text = AnswerC[count].ToString();
                            textBoxA4.Text = AnswerD[count].ToString();
                        }
                        else { }
                    else
                    {
                        Question.Add(textBoxQ.Text);
                        AnswerA.Add(textBoxA1.Text);
                        AnswerB.Add(textBoxA2.Text);
                        AnswerC.Add(textBoxA3.Text);
                        AnswerD.Add(textBoxA4.Text);
                        textBoxQ.Text = "";
                        textBoxA1.Text = "";
                        textBoxA2.Text = "";
                        textBoxA3.Text = "";
                        textBoxA4.Text = "";
                        count++;
                    }
                    
                }
            }
            private void buttonBack_Click(object sender, EventArgs e)
            {
                if (count > 0)
                {
                    count--;
                    textBoxQ.Text = Question[count].ToString();
                    textBoxA1.Text = AnswerA[count].ToString();
                    textBoxA2.Text = AnswerB[count].ToString();
                    textBoxA3.Text = AnswerC[count].ToString();
                    textBoxA4.Text = AnswerD[count].ToString();
                }
            }
        }
    }
    

    יום חמישי 31 ינואר 2013 17:41

כל התגובות

  • בגדול אני לא רוצה לקבוע את כמות השאלות הרצויות כי אחרת הייתי משתמש במערך רגיל שמשום מה הוא יותר קל לי.

    בכל מקרה זה לא עובד לי אחרי השינויים שעשיתי.

    אני משתמש ב- ArrayList כי קל יותר להסיר ערך ממנו לפי אינדקס וכך אם אני רוצה להסיר שאלה ואת כל התשובות שלה אני פשוט מסיר מכל ה-ArrayList שיש לי (5) את אותו האינדקס.

    אני אשמח לרעיונות אחרים אבל אפילו הדבר הזה שאמור להיות ממש פשוט הסתבך לי.

    אני אשמח לעוד עזרה :-)

    יום חמישי 31 ינואר 2013 10:29
  • :-) תודה על הכל

    יום שישי 01 פברואר 2013 05:25