0 / 0 / 0
Регистрация: 19.03.2010
Сообщений: 4

вопрос по Windows Forms

19.03.2010, 16:11. Показов 2209. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста!
у меня есть матрица текстовых полей. Я хочу при нажатии стрелки переходить от одного поля к другому. Для этого я подписываюсь на событие KeyUp. При нажатии стрелки влево и вправо , все получается (при нажатии влево - фокус перемещается на соседнее левое поле, при нажатии вправо - соответственно вправо). А вот при нажатии клавиш стрелка вниз и стрелка вверх ничего не происходит, хотя отладчиком все нормально заходит в обработчик события.
Вот скрин моей программы

https://www.cyberforum.ru/atta... 1269004168

А вот код обработчика события:

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
switch(e->KeyCode)
 {
             case System::Windows::Forms::Keys::Left:
                 {
                     if(j) 
                         ms[i][j-1]->Focus();
                     else 
                         if(i)
                             ms[i-1][size*size-1]->Focus();
                     break;
                 }
             case System::Windows::Forms::Keys::Up:
                 {
                     if(i)
                         ms[i-1][j]->Focus();
                     return;
                 }
             case System::Windows::Forms::Keys::Right:
                 {
                     if(j<size*size-1) 
                         ms[i][j+1]->Focus();
                     else 
                         if(i<size*size-1)
                             ms[i+1][0]->Focus();
                     break;
                 }
             case System::Windows::Forms::Keys::Down:
                 {
                     if(i<size*size-1)
                         ms[i+1][j]->Focus();
                     return;
                 }
}
ms - это матрица текстовых полей, изображенных на скрине.
i , j - строка и стобец конкретного текстового поля в матрице.
Миниатюры
вопрос по Windows Forms  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.03.2010, 16:11
Ответы с готовыми решениями:

Создание приложения Windows Forms на C++/CLI в Windows 8
Добрый день! Нужно создать windows приложение на Си++, стоит 8, на 2013 много заморочек с созданием windows forms. Не подскажите, можно ли...

рисование в Windows Forms
Здравствуйте. Кому не лень помогите пожалуйста с недоработкой моего кода. Хочу, чтобы круги рисовались в формочке, причем чтобы предыдущие...

Ошибка в Windows Forms
i2HgipUcjpY Собственно на видео все видно; Только созданный проект не запускается из-за ошибки...

6
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
19.03.2010, 17:10
В твоем коде лень смотреть, вот пример:
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
private:
    array<TextBox^, 2>^ tb; //твой массив текстбоксов
    int j;
    int i;
    void button1_Click(Object^  sender, EventArgs^  e) //инициализируем массив текстбоксов, добавляем на форму
    {
        tb = gcnew array<TextBox^, 2>(5, 5);
        for(int i = 0; i < tb->GetLength(0); i++)
        {
            for(int j = 0; j < tb->GetLength(1); j++)
            {
                tb[i, j] = gcnew TextBox();
                tb[i, j]->Size = Drawing::Size(20, 20);
                tb[i, j]->Location = Point(12 + 22 * j, 12 + 22 * i);
                Controls->Add(tb[i, j]);
                tb[i, j]->KeyDown += gcnew KeyEventHandler(this, &Form1::tb_KeyDown); //добавляем им событие KeyDown
            }
        }
        tb[0, 0]->Focus();
        i = 0;
        j = 0;
    }
    void tb_KeyDown(Object^ sender, KeyEventArgs^  e) //обрабатываем событие
    {
        switch(e->KeyCode)
        {
        case Keys::Down:
            if(i < tb->GetLength(0) - 1) i++;
            break;
        case Keys::Right:                    
            if(j < tb->GetLength(1) - 1) j++;
            break;
        case Keys::Left:
            if(j > 0) j--;
            break;
        case Keys::Up:
            if(i > 0) i--;
            break;
        }
        tb[i, j]->Focus();
    }
0
0 / 0 / 0
Регистрация: 19.03.2010
Сообщений: 4
19.03.2010, 17:37  [ТС]
HIMen, сделал , как у вас в коде, но компилятор по прежнему реагирует только на стрелки влево и вправо, если нажать вверх и вниз, то ничего не происходит.
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
19.03.2010, 17:53
senator2202, выложи весь проект
0
0 / 0 / 0
Регистрация: 19.03.2010
Сообщений: 4
19.03.2010, 18:02  [ТС]
https://www.cyberforum.ru/atta... 1269010903
Вложения
Тип файла: rar курсовой.rar (3.54 Мб, 42 просмотров)
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
20.03.2010, 01:39
Действительно, что-то странное, попробуй использовать нормальный двумерный массив array<TextBox^, 2>^ вместо array<array<TextBox^>^>^

Добавлено через 31 секунду
Мой код в новом проекте у тебя нормально работает?
0
0 / 0 / 0
Регистрация: 19.03.2010
Сообщений: 4
20.03.2010, 07:37  [ТС]
HIMen, получается то же самое!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.03.2010, 07:37
Помогаю со студенческими работами здесь

Windows Forms Icon
Добрый день. Пишу в Visual Studio 2010. На форуме куча тем про изменение иконок .NET приложений на C#. Понимаю, что суть одна, но...

Windows forms c++ ComboBox
Добрый день!Возникла проблема следующего характера. Необходимо чтобы каждому элементу из Combobox соответствовало числовое значение(для...

Шрифты и Windows Forms С++
Итак, надо сделать задачку в которой будет текст увеличиваться по левой кнопе мыщи, уменьшаться по правой... С кнопками разобрался. А вот...

ООП и Windows Forms
Если у меня есть собственный класс, с приватными членами и перегруженными операторами, куда это записывать в Windows Forms? Обычно в...

VS CLR в Windows Forms
Такой вопрос, можно ли имея готовый проект СLR (написан для работы с командной строкой), адаптировать под формы? А именно, используя...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru