2013-02-25 2 views
0

Итак, мой файл XML выглядит следующим образом:Получение массива кнопок для отображения данных из XML-файла?

<?xml version="1.0" encoding="utf-8" ?> 
<quiz> 

</answers> 
</question> 

<!-- More questions here --> 

</quiz> 

Мои Form1.cs выглядит следующим образом:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Windows.Forms; 
using System.Xml.Linq; 
using System.Drawing; 

namespace WindowsFormsApplication1 
{ 
    public partial class FormMain : Form 
    { 

В принципе, все четыре кнопки имели вопрос о них, а не ответы и под внизу слева, появилась пустая кнопка. Как мне задать вопрос, где будет отображаться метка 1, и ответы на четыре отдельные кнопки? Кроме того, как я это сделаю, когда я начну добавлять несколько вопросов (пользователь, очевидно, не может перейти к следующему вопросу, если только они не получат предыдущее право, и вначале можно выбрать трудность, чтобы показать другой набор вопросов).

Я был на этом некоторое время, и я думаю, что ему нужен свежий набор глаз, потому что мой относительно новичок C# -мозг не может понять это. Кто-нибудь мне поможет?

ответ

0

Вы настраиваете Текст каждой кнопки каждый раз, когда вокруг вашего цикла:

foreach (var question in _questions) 
{ 
    button1.Text = question.QuestionText; 
    button2.Text = question.QuestionText; 
    button3.Text = question.QuestionText; 
    button4.Text = question.QuestionText; 
} 

В последний раз вокруг петли, каждая кнопка будет введите текст в текст последнего вопроса.

Это также выглядит немного странно, поскольку у вас есть четыре кнопки, определенные как поля формы, но вы создаете дополнительные кнопки в своем методе PopulateForm, но ничего не делаете с ними.

Вы бы лучше избавиться от полей и работа с вновь созданными кнопками непосредственно:

private void PopulateForm() 
{ 
    int count = 0; 

    foreach (var question in _questions) 
    { 
     var button = new Button(); 
     button.Size = new Size(60, 23); 
     button.Location = new Point(100, 40 + (count * 30)); 
     button.Text = question.QuestionText; 
     Controls.Add(button); 
     count++; 
    } 
} 

Вы должны установить местоположение каждой кнопку на что-то другое, в противном случае все они будут показывать в такое же место.


EDIT:

Глядя на ваш код в ваш почтовый файл, что вы хотите что-то подобное (при условии, что ваши вопросы есть четыре ответа):

private void PopulateForm() 
{ 
    foreach (var question in _questions) 
    { 
     label1.Text = question.QuestionText; 

     button1.Text = question.Answers[0]; 
     button2.Text = question.Answers[1]; 
     button3.Text = question.Answers[2]; 
     button4.Text = question.Answers[3]; 
    } 
} 
+0

Так избавиться кнопки [] myBut = новая кнопка [3]; for (int i = 0; i <3; i ++) и заменить его на вышеуказанное? Как установить расположение каждой отдельной кнопки, если она зацикливается? – user2084095

+0

@ user2084095: Да. Чтобы установить положение каждой кнопки, вы можете просто добавить заданную сумму каждый раз к своей позиции. – adrianbanks

+0

Я пробовал это, но каждая кнопка просто пустая. Я никогда раньше не делал таких вещей; как мне добавить установленную сумму в свою позицию? Он делает это: http://i.imgur.com/V8Ejqst.png - Я хочу, чтобы label1 отображал вопрос из файла XML и четырех пустых кнопок, чтобы иметь на нем четыре возможных ответа, без раздражающей перекрывающейся кнопки с текстом в этом. – user2084095

Смежные вопросы