Advertisement
SVXX

MSQ Response Bug

May 11th, 2013
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.20 KB | None | 0 0
  1. //In the Form class
  2. private void ClickDelegate(Object o, System.EventArgs e, QuestionContainerState obj)
  3. {
  4.     CustomControl1 c = (CustomControl1)o; //CustomControl1 is the class name of the custom label I'm using to display on the question palette.
  5.     ... //Irrelevant code
  6.     int adder = DisplayAQuestion(c.GetQNo);
  7.     counter = adder + 1; //counter stores the current value of the question being displayed.
  8.     ... //Irrelevant code
  9. }
  10.  
  11. private void DisplayAQuestion(int i)
  12. {
  13.     ButtonBase temp;
  14.     int optionId = 1;
  15.     foreach (string s in questions[i].Options)
  16.     {
  17.           ... //Irrelevant code, MCQ portion.
  18.           else if (QuesTypes[i].Equals("MSQ") || QuesTypes[i].Equals("Linked")) //Temporary measure for linked questions
  19.           {
  20.                 if (questionDisplay1.MSQResp.ContainsKey(i))
  21.                 {
  22.                     //temp = questionDisplay1.GetResponse;
  23.                     var temporary = questionDisplay1.MSQResp.FirstOrDefault(x => x.Key.Equals(i)).Value.Find(y => ((CustomChecks)y).optionId == optionId);
  24.                     if (temporary != null && temporary.Text.Equals(s))
  25.                     {
  26.                         questionDisplay1.AddOption_msq(s, true, i, optionId);
  27.                     }
  28.                     else
  29.                         questionDisplay1.AddOption_msq(s, false, i, optionId);
  30.                 }
  31.                 else
  32.                 {
  33.                         questionDisplay1.AddOption_msq(s, false, i, optionId);
  34.                 }
  35.          }
  36.          optionId++;
  37.    }
  38. }
  39.  
  40. private void button5_Click(object sender, EventArgs e) //Save And Next button
  41. {
  42.     if (QuestionContainer.Controls.Count != 0)
  43.     {
  44.                        if (QuesTypes[counter - 1].Equals("MCQ")) //Sample portion
  45.                        {
  46.                               if (!questionDisplay1.MCQResp.ContainsKey(counter - 1))
  47.                                         questionDisplay1.MCQResp.Add(counter - 1, questionDisplay1.MCQDisplay[counter - 1]);
  48.                               else
  49.                                         questionDisplay1.MCQResp[counter - 1] = questionDisplay1.MCQDisplay[counter - 1];
  50.  
  51.                        }
  52.                        else if (QuesTypes[counter - 1].Equals("MSQ") || QuesTypes[counter - 1].Equals("Linked"))
  53.                        {
  54.                               if (!questionDisplay1.MSQResp.ContainsKey(counter - 1))
  55.                                         questionDisplay1.MSQResp.Add(counter - 1, questionDisplay1.MSQDisplay[counter - 1]);
  56.                               else
  57.                                         questionDisplay1.MSQResp[counter - 1] = questionDisplay1.MSQDisplay[counter - 1];
  58.                        }
  59.  
  60.                        ... //Irrelevant code
  61.  
  62.     }
  63. }        
  64.  
  65. //In the QuestionDisplay class.
  66. public void AddOption_msq(string optionText, bool arg, int QNo, int option)
  67. {
  68.             CustomChecks cb = new CustomChecks();
  69.             cb.Text = optionText;
  70.             cb.Location = new Point(3, 40 + grbOptions.Controls.Count * 30);
  71.             cb.AutoSize = true;
  72.             cb.Checked = arg;
  73.             cb.QuestionNumber = QNo;
  74.             cb.optionId = option;
  75.             if (!DispMSQ.ContainsKey(QNo)) //First time the question is viewed.
  76.             {
  77.                 // First time, add an empty list
  78.                 DispMSQ.Add(QNo, new List<ButtonBase>());
  79.             }
  80.             if(DispMSQ.ContainsKey(QNo) && DispMSQ[QNo].Any()) //If option is deselected.
  81.             {
  82.                 if (arg == false)
  83.                     foreach (CustomChecks C in DispMSQ[QNo])
  84.                     {
  85.                         if(C.Text.Equals(optionText))
  86.                         {
  87.                             DispMSQ[QNo].Remove(C);
  88.                             break;
  89.                         }
  90.                     }
  91.             }
  92.             cb.CheckedChanged += delegate(Object sender, System.EventArgs e)
  93.             {
  94.                 temp = sender as CustomChecks;
  95.                 if (((CustomChecks)temp).Checked == true)
  96.                 {
  97.                     if (!DispMSQ[QNo].Any(x => x.Text.Equals(optionText))) //Check if the checkbox already exists in the List
  98.                     {
  99.                         DispMSQ[QNo].Add(temp);
  100.                     }
  101.                 }
  102.                 if (((CustomChecks)temp).Checked == false)
  103.                 {
  104.                     foreach (CustomChecks C in DispMSQ[QNo])
  105.                         if (C.Text.Equals(temp.Text))
  106.                         {
  107.                             DispMSQ[QNo].Remove(C);
  108.                             break;
  109.                         }
  110.                 }
  111.             };
  112.             grbOptions.Controls.Add(cb);
  113.             if (RespMSQ.ContainsKey(QNo) && RespMSQ[QNo].Any()) //For persistently displaying the proper checked state.
  114.             {
  115.                 foreach (CustomChecks C in RespMSQ[QNo])
  116.                 {
  117.                     foreach (CustomChecks D in grbOptions.Controls)
  118.                     {
  119.                         if (D.Text.Equals(C.Text))
  120.                         {
  121.                             D.Checked = C.Checked;
  122.                         }
  123.                     }
  124.                 }
  125.             }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement