Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 06.09.2014
Сообщений: 7
1
.NET 4.x

Проверить, верно ли в RadioButton выбрана категория картинки, которая находится в PictureBox

06.09.2014, 23:58. Показов 1070. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет ребята, в шарпе новенький. Хотелось бы сделать что-то тип этого будет одна картинка, я должен выбрать к чему она относиться будет 3 радиобатона и 1 батон для проверки в низу. Если например на картинке яблоко, а выбрать надо между: овощи, фрукты, машины. Я выбираю радиобатон где нарисованы фрукты, и нажимаю проверить, картинка фруктов меняется на голочку, что это верно и в низу пишется в лейболе верно, а остальные варианты как были так и остаются, аналогично с неправильным ответом. Вот скриншот, что я хочу сделать, тут просто накидал на форму, а кода нету =(
Миниатюры
Проверить, верно ли в RadioButton выбрана категория картинки, которая находится в PictureBox  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2014, 23:58
Ответы с готовыми решениями:

Как проверить, под каким углом находится изображение в picturebox
В пикчербоксе есть картинка кораблика, по нажатию кнопки F, картинка поворачивается на 90 градусов,...

Как проверить выбрана ли радиокнопка?
Здравствуйте! Подскажите пожалуйста, как посредством Джава проверить выбрана ли одна из...

Проверить какая из option выбрана и стоит ли галочка в check1
Кто может - помогите. Есть option1, option2, option3, option4... Так же есть check1, который...

Прозрачный фон у картинки на элементе PictureBox непрозрачен для другого PictureBox
Здравствуйте! Проблема состоит в следующем! У меня есть картинка .png с прозрачным фоном. При...

4
23 / 23 / 10
Регистрация: 20.06.2013
Сообщений: 83
07.09.2014, 11:43 2
У картинки есть замечательное свойство Tag, в которое можно положить объект.
Можно картинкам добавить в Tag название группы
C#
1
2
3
            Image img;
            img = test.Properties.Resources.fruit;
            img.Tag = "Фрукт";
и проверять
C#
1
2
3
4
                //здесь (sender as RadioButton).Text, но по сути текст выбранного радиобутона
                if (this.pictureBox1.Image.Tag.ToString() == (sender as RadioButton).Text)
                    MessageBox.Show("Верно");
                else MessageBox.Show("Ошибочка вышла!");
0
0 / 0 / 0
Регистрация: 06.09.2014
Сообщений: 7
07.09.2014, 15:56  [ТС] 3
Я не понял, можно сурс, извините что туплю
0
2 / 2 / 1
Регистрация: 05.05.2012
Сообщений: 159
07.09.2014, 17:58 4
У меня почти такой же вопрос, у меня есть вопрос и есть 3 ответа (а-б-в).
Проверить, верно ли в RadioButton выбрана категория картинки, которая находится в PictureBox

Мне надо привязать ответы, к кнопкам А-Б и В.
Как это можно сделать ?
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8" ?>
<head>
  <Math id="0">
    <Номер>Вопрос №1</Номер>
    <Вопрос>Оберіть вірну відповідь 67+46=?</Вопрос>
    <Ответ-А->А)103</Ответ-А->
    <Ответ-Б->Б)113 (+)</Ответ-Б->
    <Ответ-В->В)123</Ответ-В->
  </Math>
 
  <Math id="1">
    <Номер>Вопрос №2</Номер>
    <Вопрос>Якщо у Марійчки було сім яблук, у Петрика одинадцять, а у Мишка невідомо, але на чотири більше ніж у Петрика.  Скільки яблук у Петрика та у Мишка разом?</Вопрос>
    <Ответ-А->А)26 (+)</Ответ-А->
    <Ответ-Б->Б)27</Ответ-Б->
    <Ответ-В->В)16</Ответ-В->
  </Math>
 
  <Math id="2">
    <Номер>Вопрос №3</Номер>
    <Вопрос>Скільки міліметрів (мм) в 13 см? Оберіть правильну відповідь.</Вопрос>
    <Ответ-А->А)129</Ответ-А->
    <Ответ-Б->Б)139</Ответ-Б->
    <Ответ-В->В)130 (+)</Ответ-В->
  </Math>
........
</head>
Сам код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string text = "";
            XmlTextReader reader = new XmlTextReader(@"C:\Documents\Visual Studio 2013\Projects\Testing\Testing\XMLFile1.xml");
            while (true)
            {
                reader.ReadToFollowing("Math");
                reader.MoveToFirstAttribute();
                if (Convert.ToInt32(reader.Value) == listBox1.SelectedIndex)
                {
                    reader.ReadToFollowing("Номер");
                    text = text + "" + reader.ReadElementContentAsString() + "\r\n";
                    reader.ReadToFollowing("Вопрос");
                    text = text + "" + reader.ReadElementContentAsString() + "\r\n";
                    reader.ReadToFollowing("Ответ-А-");
                    text = text + "" + reader.ReadElementContentAsString() + "\r\n";
                    reader.ReadToFollowing("Ответ-Б-");
                    text = text + "" + reader.ReadElementContentAsString() + "\r\n";
                    reader.ReadToFollowing("Ответ-В-");
                    text = text + "" + reader.ReadElementContentAsString() + "\r\n";
                    break;
                }
            }
            textBox1.Text = text;
        }
 
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            string text = "";
            XmlTextReader reader = new XmlTextReader(@"C:\Documents\Visual Studio 2013\Projects\Testing\Testing\XMLFile1.xml");
            while (true)
            {
                reader.ReadToFollowing("Math");
                reader.MoveToFirstAttribute();
                if (Convert.ToInt32(reader.Value) == listBox1.SelectedIndex)
                {
                    reader.ReadToFollowing("Ответ-А-");
                    text = text + "Ответ-" + reader.ReadElementContentAsString() + "\r\n";
                    break;
                }
            }
            textBox1.Text = text;
        }
 
        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            string text = "";
            XmlTextReader reader = new XmlTextReader(@"C:\Documents\Visual Studio 2013\Projects\Testing\Testing\XMLFile1.xml");
            while (true)
            {
                reader.ReadToFollowing("Math");
                reader.MoveToFirstAttribute();
                if (Convert.ToInt32(reader.Value) == listBox1.SelectedIndex)
                {
                    reader.ReadToFollowing("Ответ-Б-");
                    text = text + "Ответ-" + reader.ReadElementContentAsString() + "\r\n";
                    break;
                }
            }
            textBox1.Text = text;
        }
 
        private void checkBox3_CheckedChanged(object sender, EventArgs e)
        {
            string text = "";
            XmlTextReader reader = new XmlTextReader(@"C:\Documents\Visual Studio 2013\Projects\Testing\Testing\XMLFile1.xml");
            while (true)
            {
                reader.ReadToFollowing("Math");
                reader.MoveToFirstAttribute();
                if (Convert.ToInt32(reader.Value) == listBox1.SelectedIndex)
                {
                    reader.ReadToFollowing("Ответ-В-");
                    text = text + "Ответ-" + reader.ReadElementContentAsString() + "\r\n";
                    break;
                }
            }
            textBox1.Text = text;
        }
0
Заблокирован
07.09.2014, 20:25 5
zZzTipo4ekzZz, вот небольшой набросок, должен помочь:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8" ?>
<head>
  <Math id="0">
    <Номер>Вопрос №1</Номер>
    <Вопрос>Оберіть вірну відповідь 67+46=?</Вопрос>
    <Ответ-А->А)103</Ответ-А->
    <Ответ-Б->Б)113 (+)</Ответ-Б->
    <Ответ-В->В)123</Ответ-В->
  </Math>
 
  <Math id="1">
    <Номер>Вопрос №2</Номер>
    <Вопрос>Якщо у Марійчки було сім яблук, у Петрика одинадцять, а у Мишка невідомо, але на чотири більше ніж у Петрика.  Скільки яблук у Петрика та у Мишка разом?</Вопрос>
    <Ответ-А->А)26 (+)</Ответ-А->
    <Ответ-Б->Б)27</Ответ-Б->
    <Ответ-В->В)16</Ответ-В->
  </Math>
 
  <Math id="2">
    <Номер>Вопрос №3</Номер>
    <Вопрос>Скільки міліметрів (мм) в 13 см? Оберіть правильну відповідь.</Вопрос>
    <Ответ-А->А)129</Ответ-А->
    <Ответ-Б->Б)139</Ответ-Б->
    <Ответ-В->В)130 (+)</Ответ-В->
  </Math>
</head>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 public partial class Form1 : Form
    {
        List<List<string>> atr;
        Dictionary<int, bool> sp;
        public Form1()
        {
            InitializeComponent();
            button1.Click += (a, b) =>
                {
                    XDocument xd = XDocument.Load("D://Math.xml");//путь к файлу
                    //считываем .xml в List<List<string>> - список вопросов. 
                    //Внутренний список - строки из каждого вопроса 
                    atr = xd.Root.Elements()
                        .Select(x => x.Elements()
                        .Select(u => u.Value).ToList()).ToList();
                    //вывод для проверки
                    /* foreach (var p in atr)
                     {
                         foreach (var q in p)
                             richTextBox1.Text += q + "\r\n";
                         richTextBox1.Text += "\r\n";
                     }
                     */
                    //словарь, в котором храним "правильность" ответов
                    sp = new Dictionary<int, bool>();
                    //заполняем вопросами
                    foreach (var w in Enumerable.Range(1, atr.Count))
                        listBox1.Items.Add(w);
 
                };
            listBox1.SelectedIndexChanged += (a, b) =>
                {
 
                    richTextBox1.Clear();
                    //выводим вопрос по индексу
                    foreach (var q in atr[listBox1.SelectedIndex])
                        richTextBox1.Text += q + "\r\n";
                    richTextBox1.Text += "\r\n";
                };
 
            button2.Click += (a, b) =>
                {
                    //получаем
                    int index = indexOfChecked();
                    if (index == 0)
                    {
                        MessageBox.Show("Вы не ответили на вопрос!");
                    }
                    else
                    {
                        setChecked();
                        int ind = listBox1.SelectedIndex;
                        //проверка на наличие "+" в варианте ответа
                        if (richTextBox1.Lines[1 + index].Contains("+")) sp[ind] = true;
                        else sp[ind] = false;
                        //если вопрос не последний, переходим к следующему
                        if (ind < atr.Count - 1)
                            listBox1.SelectedIndex++;
                        else
                            MessageBox.Show(String.Format("Вы ответили на все вопросы {0}",
                                sp.Where(x => x.Value).Count()));
                    }
                };
        }
        //метод возвращает индекс выбранного переключателя
        private int indexOfChecked()
        {
            if (radioButton1.Checked) return 1;
            else if (radioButton2.Checked) return 2;
            else if (radioButton3.Checked) return 3;
            return 0;
 
        }
        private void setChecked(bool value = false)
        {
            radioButton1.Checked = value;
            radioButton2.Checked = value;
            radioButton3.Checked = value;
        }
    }
Исключения не ловил, способ отбора правильных рекомендую изменить. Как вариант - правильный индекс сделать отдельным пунктом в каждом вопросе.
На всякий случай прикрепляю архив.
Вложения
Тип файла: rar TestMath.rar (53.0 Кб, 5 просмотров)
0
07.09.2014, 20:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2014, 20:25
Помогаю со студенческими работами здесь

Помогите вывести на экран дату которая была выбрана в календаре.
Недавно начал праграмировать на С# т.е ASP.NET Помогите вывести на экран дату которая была...

QListView: как определить номер строки, которая выбрана нажатием мышки
подскажите, как определить номер строчки которая выбрана нажатием мышки

RadioButton не находится
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms,...

При нажатии на picturebox выбирался radiobutton
Как сделать, чтобы при нажатии на picturebox выбирался radiobutton?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru