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

Управление движением лейбла, нажатием на стрелки клавиатуры

27.12.2018, 23:27. Показов 4864. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Нужна помощь, решил я тут прописать перемещение лейбла по форме, нажатием стрелок, но при запуске, лейбл не перемещается и цвет тоже не меняет(при создании цвет лейбла синий)
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
[SIZE="1"]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 test_engine
{
    
 
    public class RunPlayer
    {       
 
        Label label { get; set; }
        Form _form = new Form();
 
        public RunPlayer(Label label, Form form)
        {
            this.label = label;
            form.KeyPreview = true;            
            label.KeyDown += new KeyEventHandler(Label_KeyDown);
        }
        
 
        void Label_KeyDown (object sender, KeyEventArgs e)
        {
 
            
            switch (e.KeyCode)
            {
                case Keys.Right:
                    {
                        label.Location = new Point(label.Location.X + 50, label.Location.Y);
                        label.BackColor = Color.Black;                        
                        break;
                    }
            }
            
        }
 
        public class KeyEventHandler<T>
        {
            
        }
    }
}[/SIZE]
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.12.2018, 23:27
Ответы с готовыми решениями:

Управление движением объектов с клавиатуры
Постоянное движение нескольких графических объектов с отражением от границ окна (по таймеру). Начальные положение и скорости объектов...

Управление движением объекта нажатием клавиши
как сделать так чтобы изображение на экране передвигалось когда я нажимаю клавишу? Например: на экране квадрат, я нажимаю на клавиатуре...

Управление движением фигуры нажатием клавиши
1) В центре экрана появляется красный круг с синим контуром. По нажатию клавиши «Еnter» круг начинает «летать» по экрану, при этом...

11
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
28.12.2018, 01:19
Не знаю насчет лейбла, а с пикчербоксом нет проблем
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 10
28.12.2018, 09:17  [ТС]
Т..е. этот же код использовали для пикчербокса и всё работает?
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
28.12.2018, 09:25
Подписывайтесь на событие Key_Up
Или добавьте это:
C#
1
2
3
4
5
public Form1()
{
    InitializeComponent();
    this.KeyPreview = true;
}
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 10
28.12.2018, 11:00  [ТС]
Попробую => спасибо)
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
28.12.2018, 13:34
maximmaxon, для пикчербокса не подходит, не задан шаг перемещения
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 10
28.12.2018, 19:37  [ТС]
Подписался на событие KeyUp и в конструкторе формы написал
C#
1
this.KeyPreview = true;
, но всё равно ничего не происходит, он попросту не запускает метод Label_KeyUp
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
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 test_engine
{
    
 
    public class RunPlayer
    {       
 
        Label label { get; set; }
        Form _form = new Form();
 
        public RunPlayer(Label label, Form form)
        {
            this.label = label;                       
            label.KeyUp += new KeyEventHandler(Label_KeyUp);
        }
        
 
        void Label_KeyUp (object sender, KeyEventArgs e)
        {
 
            
            switch (e.KeyCode)
            {
                case Keys.Right:
                    {
                        label.Location = new Point(label.Location.X + 50, label.Location.Y);
                        label.BackColor = Color.Black;                        
                        break;
                    }
 
                default:
                    {
                        MessageBox.Show("Клавиша нажата!");
                        break;
                    }
            }
            
        }
       
    }
}
0
65 / 47 / 26
Регистрация: 25.02.2014
Сообщений: 172
28.12.2018, 19:57
Лучший ответ Сообщение было отмечено maximmaxon как решение

Решение

Может будет проще вызывать событие не для label, а для формы ?
Не срабатывает у вас метод, скорее всего потому, что label не в фокусе
C#
1
2
3
 InitializeComponent();
 this.KeyPreview = true;
 this.KeyUp += new KeyEventHandler(frm_KeyUp);
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void frm_KeyUp(object sender, KeyEventArgs e)
        {
 
            switch (e.KeyCode)
            {
                case Keys.Right:
                {
                    label1.Location = new Point(label1.Location.X + 50, label1.Location.Y);
                    label1.BackColor = Color.Black;
                    break;
                }
 
                default:
                {
                    MessageBox.Show("Клавиша нажата!");
                    break;
                }
            }
        }
либо, если не хотите так, то добавьте в конструктор:

C#
1
this.ActiveControl = label1;
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 10
28.12.2018, 20:19  [ТС]
Да, действительно всё заработало, но лэйбл не меняет своё местоположение, что делать?
0
65 / 47 / 26
Регистрация: 25.02.2014
Сообщений: 172
28.12.2018, 20:22
Как же так получается, что работает но не перемещается label, ведь в этом то и была проблема ?)))
На форме есть другие компоненты, кроме label ?
1
0 / 0 / 0
Регистрация: 05.02.2018
Сообщений: 10
28.12.2018, 21:12  [ТС]
Да, есть кнопка. Я имею ввиду, что в кейсe Keys.Right не срабатывает код (label не двигается и не меняет цвет), а в кейсе default - работает (Появляется MessageBox).
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
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 test_engine
{
 
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.KeyPreview = true;
            this.KeyUp += new KeyEventHandler(frm_KeyUp);
        }
 
        Label _label = new Label();
 
        public Form1(Label label)
        {
            _label = label;
        }
 
        private void Form1_Shown(object sender, EventArgs e)
        {
            Engine.CreateWindows(500, 500, "Test");
            //Engine.CreateButton(50, 50, "Start", 250, 250, "StartButton");
            Engine.CreateLabel(40, 40, "Player", 0, 0, "PlayerLabel");
        }
 
        private void frm_KeyUp(object sender, KeyEventArgs e)
        {
 
            switch (e.KeyCode)
            {
                case Keys.Right:
                    {
                        _label.Location = new Point(_label.Location.X + 50, _label.Location.Y);
                        _label.BackColor = Color.Black;
                        break;
                    }
 
                default:
                    {
                        MessageBox.Show("Клавиша нажата!");
                        break;
                    }
            }
        }
    }
}
Добавлено через 33 минуты
Всё, я разобрался) Всем спасибо за помощь)
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
28.12.2018, 21:23
maximmaxon, Сейчас двигаются лейбл и пикчербокс, т.к. задан шаг
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.12.2018, 21:23
Помогаю со студенческими работами здесь

Управление движением графических объектов с клавиатуры
Здравствуйте! Возможно ли это? Если да, то каким образом? Я знаю, как запустить движение, но можно ли добиться того, чтобы движение...

Графика. Управление движением объектов с клавиатуры
Есть куча Line, Circle, Arc и тд, т.е. некий рисунок, ему нужно придать жизнь т.е. что бы он начал двигаться. Подскажите что запихать ещё в...

Управление движением объекта с помощью стрелок клавиатуры
Нужна помощь в управлении объекта клавиатурой. Объект должен двигаться как на рисунке при нажатии клавиш вправо и влево. Пробовал решить...

Движение, вращение, управление движением, управление вращением фигуры
Написать программу, выполняющую четыре операции над графическим объектом(&quot;фигурой&quot;):движение,вращение,управление движением,управление...

Управление движением
Вопрос в следующем: хотел сделать, чтобы марио двигался только по зеленным и синим квадратам, причем синие квадраты превращались потом в...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru