2 / 2 / 0
Регистрация: 03.10.2011
Сообщений: 109
1

Движение точки по графику в pictureBox при нажатии кнопок клавиатуры Left/Right

16.10.2012, 15:06. Показов 7300. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! У меня есть пикчебокс, в котором нарисованы оси, рисуется выбранный пользователем график. Нажатием мыши на любом месте пикчебокса появляется точка с координатами и сносками к осям. И нужно сделать что бы после этого можно было перемещаться по графику при нажатии клавиш клавиатуры соответственно Left/Right. Как это осуществить, не могу понять....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2012, 15:06
Ответы с готовыми решениями:

Как реализовать движение фигуры на canvas при нажатии на клавиши up, down, left, right?
как реализовать движение фигуры на canvas с помощью клавиш up, down, left, right? Проблема в том...

PictureBox должен начать движение при нажатии на кнопку
Добрый день, у меня проблема, не могу найти как создать анимацию картинки, то есть PictureBox...

Движение картинки по диагоналям, при нажатии клавиш клавиатуры (без jQuery)
Всем доброго времени суток! Делаю так, чтобы изображение двигалось по canvas на сайте. Написал...

Событие клавиатуры и движение pictureBox
всем привет мне нужно чтоб например при нажатие w (ц) pictureBox поднимался выше но у меня ничего...

29
2 / 2 / 0
Регистрация: 03.10.2011
Сообщений: 109
16.10.2012, 23:50  [ТС] 21
Author24 — интернет-сервис помощи студентам
forgergg, а куда нужно добавить эту строку?
C#
1
pictureBox2.KeyDown += new KeyEventHandler(pictureBox2_KeyDown);
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
17.10.2012, 00:11 22
AnutaMypka, если канва создавалась автоматически дизайнером, то в описание метода void InitializeComponent() - Form1.Desinger.cs. Если ручками, то сразу после создания экземпляра класса.

Добавлено через 1 минуту
Ну и стоит почитать про WinForms в c#.
0
2 / 2 / 0
Регистрация: 03.10.2011
Сообщений: 109
17.10.2012, 00:13  [ТС] 23
forgergg, в Form1.Desinger.cs у меня нет void InitializeComponent().. А где находится создание экземпляра класса? Я немного не понимаю...
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
17.10.2012, 00:24 24
AnutaMypka, должен быть, потому что в конструкторе основной формы он как раз и вызывается.
C#
1
2
3
4
5
6
7
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
     }
и инициализация класса тоже производится в InitializeComponent(). Ищи лучше.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.pictureBox2 = new System.Windows.Forms.PictureBox();
        }
 
        #endregion
 
        private System.Windows.Forms.PictureBox pictureBox2;
1
2 / 2 / 0
Регистрация: 03.10.2011
Сообщений: 109
17.10.2012, 00:33  [ТС] 25
Нашла, добавила в
C#
1
private void InitializeComponent()
C#
1
pictureBox2.KeyDown += new KeyEventHandler(pictureBox2_KeyDown);
Но всеравно не двигается курсор...
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
17.10.2012, 00:43 26
AnutaMypka, у меня есть 2 предположения:
1. Picture box не получил фокус и поэтому не срабатывает событие.
2. Ошибка где-то в коде.
Для первого варианта можно попробовать выбросить MessageBox в обработчике KeyDown, если не вылетит сообщение, то значит это так и есть - не в фокусе. Тогда можно либо программно выставить фокус, либо переписать те же обработчики KeyDown, только для Form1.
Для второго варианта надо искать ошибку. И если в первом варианте сообщение появилось, то тоже надо искать ошибку в коде.
0
2 / 2 / 0
Регистрация: 03.10.2011
Сообщений: 109
17.10.2012, 00:50  [ТС] 27
forgergg, а что нужно сделать что бы PictureBox был в фокусе?
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
17.10.2012, 01:20 28
AnutaMypka, вообщем наврал(доверяй, да проверяй. Да ?) я на счет KeyDown у PictureBox. Не получает этот контрол фокус ввода, в связи с чем нажатие клавиш не обрабатывает. Надо в событии KeyDown главной формы все это делать. Надо в InitializeComponent добавить строчку
C#
1
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
и изменить имя метода с PictureBox2_KeyDown на Form1_KeyDown. Так же надо установить(либо в дизайнере, либо прописать в InitializeComponent)
C#
1
this.KeyPreview = true;
Тогда форма будет получать нажатия клавиш, перед тем как отдать их контролу, на котором фокус ввода.
0
2 / 2 / 0
Регистрация: 03.10.2011
Сообщений: 109
17.10.2012, 01:41  [ТС] 29
Всеравно не работает...или я что то не понимаю...
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
17.10.2012, 03:32 30
AnutaMypka, вспомнил тут еще. После изменения координат точки в обработчике KeyDown, надо напомнить PictureBox, что бы он себя перерисовал.
В том же Form1_KeyDown, после логики, добавить
C#
1
pictureBox2.Refresh();
Должно помочь.
1
17.10.2012, 03:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2012, 03:32
Помогаю со студенческими работами здесь

Необходимо, чтобы при нажатии на одну из кнопок меню, фрейм с рекламой сворачивался, и разворачивался снова при нажатии на другую кнопку
Задача такая: Есть три фрейма (расположены друг под другом) - это реклама (вверху), меню...

Движение PictureBox стрелками клавиатуры с учетом коллизий
Всем доброго здоровица!!! Помогите пожалуйста с задачей: На форме PB и лейблы (напр зелёные). PB...

При нажатии кнопок мыши выводить информацию о нажатии соответствующей кнопки
на с++ написать программу которая при нажатии кнопок мыши выводить информацию о нажатии...


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

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

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