Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 1
Регистрация: 12.12.2014
Сообщений: 15

Программа тестирования, редактор текстов

12.12.2014, 19:53. Показов 1560. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. я начинающий программист, пока могу только создавать простые приложения. Сейчас пишу программу для тестирования знаний по электробезопасности. Помогите с алгоритмом и самой программой.

вот что я не могу сделать:
1) у меня есть главная форма, на которой есть регистрация нового тестируемого, он вводит свои данные и снизу есть кнопка: "начать тестирование", мне нужно сделать так, чтобы, пока человек не введёт свои данные, кнопка "начать тестирование" была неактивна, была серого цвета, иначе, позеленела допустим.

2)при нажатии на кнопку "начать тестирование" должна по сути открываться новая форма, в которой происходит само тестирование, появляются вопросы и варианты ответов. Мне нужно, чтобы первая, главная форма закрылась я не могу это реализовать, только скрыть её могу, но если я её скрываю, а человек ответит на все вопросы, и нажмёт на крестик, то программа останется в процессах... как убрать это и закрыть все открытые формы?

3) как сделать так, чтобы после ответа допустим на 10-й вопрос, вылазила новая форма, старая закрывалась, а в ней появлялись результаты тестирования*? и при этом результат записывался бы в соответствующий файл или лучше в БД? если в БД то как сделать так, чтобы БД была привязана к программе и не нужно было её подключать каждый раз?

Добавлено через 45 минут
вопрос1 пока решил так:
C#
1
2
3
4
5
6
7
8
  public void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
            Form2 f2 = new Form2();
            f2.ShowDialog();
            f2.Activate();
            this.Close();
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.12.2014, 19:53
Ответы с готовыми решениями:

Программа тестирования
Доброе утро всем, сделал программу, но есть недоработки при возвращении к предыдущему вопросу не отнимаетя предыдущий ответ пользователя...

Программа для тестирования
Пишу программу для тестирования школьников (специальность учитель информатики), для большей гибкости интерфейса выбрал WPF. Возникло...

Программа для тестирования
Помогите плез, для курсовика надо тест сделать, из txt считывалось. Там по строчке вопросы с ответами идут. Получается :...

12
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
12.12.2014, 20:49
2. главную форму вы закрыть не сможете, потому что она главная
Просто пропишите в событии закрытия второй формы:
C#
1
2
3
4
        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
1
0 / 0 / 1
Регистрация: 12.12.2014
Сообщений: 15
12.12.2014, 20:51  [ТС]
Я смог, я просто при создании второй формы, сделал её главной а потом закрыл первую форму)
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
12.12.2014, 20:54
а, ну если первая форма больше не понадобится, то да
1
0 / 0 / 1
Регистрация: 12.12.2014
Сообщений: 15
12.12.2014, 21:02  [ТС]
теперь мучаюсь с "неактивным БАТОНОМ"

нужно чтобы после ввода информации в текстовые поля кнопка батон стала активной, а до этого момента неактивна. Я вот придумал только это, но не работает


C#
1
2
3
4
5
6
7
8
9
10
11
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Length>0)
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
12.12.2014, 21:05
должно работать. проверьте имя кнопки, точно ли это button1? может быть button2..
1
0 / 0 / 1
Регистрация: 12.12.2014
Сообщений: 15
12.12.2014, 21:07  [ТС]
Я пошаговый посмотрел код, дело в том, что оно запускает ФОРМУ с уже активным батоном раньше чем проверяет условие заполненности формы. Вот текст моей проги:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace TestMilitary
{
    public partial class Form1 : Form
    {
       
        public Form1()
        {
            InitializeComponent();
            comboBox1.SelectedIndex = 0;
            comboBox2.SelectedIndex = 0;
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
                 
 
        }
 
        public void button1_Click(object sender, EventArgs e)
        {
 
            this.Hide();
            Form2 f2 = new Form2();
            f2.ShowDialog();
            f2.Activate();
            this.Close();
        }
 
        public Color ButtonShadow { get; set; }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Length>0)
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
 
        }
}
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
12.12.2014, 21:11
ну) так сделайте выключите его в свойствах.


P.S.
Можно прописать так:
C#
1
2
3
4
5
        public Form1()
        {
            InitializeComponent();
            button1.Enabled = false;
        }
Однако первый способ проще и правильнее по сути.
InitializeComponent(); создаёт все кнопки и блоки на форме с указанными свойствами.
тоесть создаёт кнопку с Enabled = true. ниже строчкой вы пишите:
button1.Enabled = false; тоесть отключаете её, как бы 2 действия.
А в первом случае сразу создаётся неактивная кнопка.
1
0 / 0 / 1
Регистрация: 12.12.2014
Сообщений: 15
12.12.2014, 21:24  [ТС]
Во дела во я намудрил))) спасибо, долго ж я искал)

Добавлено через 10 минут
Тут есть ошибка в этом коде. Дело в том, что если проверять сразу несколько условий к примеру
C#
1
if (textBox1.Text.Length > 0 && textBox2.Text.Length > 0 && textBox3.Text.Length > 0)
то если допустим я ввёл только первое поле он почему то проверив условие выполняет - кнопку сделать неактивной и на этом заканчиваются все процессы, дальше не идёт никуда.... если только не закрыть форму, как вернуть его опять на ввод в форму данных? или что я не так сделал
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
12.12.2014, 21:29
код полностью пришлите, и опишите подробнее что нужно
1
0 / 0 / 1
Регистрация: 12.12.2014
Сообщений: 15
12.12.2014, 21:34  [ТС]
Нужно, чтобы выполнялось условие: если текстовые боксы заполнены(а у меня их 3) то кнопка становилась активной иначе неактивна

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace TestMilitary
{
    public partial class Form1 : Form
    {
       
        public Form1()
        {
            InitializeComponent();
            comboBox1.SelectedIndex = 0;
            comboBox2.SelectedIndex = 0;
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
                 
 
        }
 
        public void button1_Click(object sender, EventArgs e)
        {
 
            this.Hide();
            Form2 f2 = new Form2();
            f2.ShowDialog();
            f2.Activate();
            this.Close();
        }
 
        public Color ButtonShadow { get; set; }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Length > 0)
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
 
        }
}
Добавлено через 2 минуты
если написать так:
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
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Length > 0)
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
 
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            if (textBox2.Text.Length > 0)
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
 
        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            if (textBox3.Text.Length > 0)
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
то оно проверяет только одно условие, т.е. один текстбокс заполнен и кнопка активировалась
0
 Аватар для awp-sirius
64 / 63 / 43
Регистрация: 01.05.2012
Сообщений: 535
12.12.2014, 21:43
Сделайте для изменения текста во всех 3х текстбоксах одно событие.
Тоесть для первого бокса обычном способом создаёте и пишите в нём это:
C#
1
2
3
4
5
6
7
8
9
10
11
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if ((textBox1.Text.Length > 0) && (textBox2.Text.Length > 0) && (textBox3.Text.Length > 0))
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
Для второго текст бокса заходите в свойства, тыркаете на жёлтую молнию - это вкладка событий.
И вот таким образом выбираете для события TextChanged событие textBox1_TextChanged, которое вы описали выше:

Для третьего текстбокса тоже самое.
В итоге что вы сделали?
- когда изменяется текст в любой из текст боксов выполняются одни и теже строки кода.
можно было прописать вот так:
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
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if ((textBox1.Text.Length > 0) && (textBox2.Text.Length > 0) && (textBox3.Text.Length > 0))
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            if ((textBox1.Text.Length > 0) && (textBox2.Text.Length > 0) && (textBox3.Text.Length > 0))
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
        private void textBox3_TextChanged(object sender, EventArgs e)
        {
            if ((textBox1.Text.Length > 0) && (textBox2.Text.Length > 0) && (textBox3.Text.Length > 0))
            {
                button1.Enabled = true;
            }
            else
            {
                button1.Enabled = false;
            }
        }
Тоесть для каждого блока своё событие, но зачем это? если код идентичен.
2
0 / 0 / 1
Регистрация: 12.12.2014
Сообщений: 15
12.12.2014, 21:45  [ТС]
спасибо, я точно торможу)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.12.2014, 21:45
Помогаю со студенческими работами здесь

Программа для тестирования
Я создаю тестер, мне нужно сделать так чтобы при нажатие на кнопку button(Далее) появлялся новый вопрос?Делал все это дело через groupbox...

Программа тестирования знаний C# + EntityFramework
Доброго времени суток ! Есть база ID Question AnswerA AnswerB AnswerC AnswerD на форму кинул один label для вопроса и 4...

Не работает программа для тестирования
Всем привет! У меня проблема в работе тестирования. Есть пробник тестирования (файл с заданиями или вопросами) и код с книги. Но...

Программа тестирования - рандомизированное появление форм
Разработка программы в Visual Studio на C#. Имеется титульник, после чего идет тестирование. Программа тестирования представляет из...

Программа тестирования, перевести код с Delphi
Доброе утро! Вопрос в следующем, как этот код перевести на C#. unit MissionClass; interface type Mission = class ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru