С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
solare
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 33
1

Вывести номер нажатой клавиши в другой форме

20.07.2018, 12:00. Просмотров 854. Ответов 9
Метки нет (Все метки)

Всем привет. Есть такой код который при нажатии клавиши на форме выводит форму(Fom2) с кодом нажатой клавиши.
Теперь как сделать чтобы при повторном нажатии на форму1 выводился номер уже след нажатой клавиши.
Я понимаю что вторая форма не в фокусе пробовала сделать form1.focus но все равно
пробовала закрыть форму не получается.

И еще как код кнопки прописать не в названии окна, а в середине как при massagebox(pp.ToString())


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
namespace WindowsFormsApp5
{
 
  
 
        public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.PreviewKeyDown += new PreviewKeyDownEventHandler(this.Form1_PreviewKeyDown);
 
 
        }
 
 
 
        private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
        {
            
            //form2.Close();
            int pp;
            pp = e.KeyValue;
            Form form2 = new Form();
            Form1 Form1 = new Form1();
            form2.Text = pp.ToString();
 
          
        }
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2018, 12:00
Ответы с готовыми решениями:

Определение нажатой клавиши
Каким образом можно создать обработчик на основе оператора switch, получая...

Функция для определения нажатой клавиши
Есть ли функции в .NET которые запоминают начатую клавишу. Вот на пример...

Определение нажатой клавиши в службе Windows
Всем привет. Пишу службу для винды. Мне нужно определить нажата ли клавиша и...

Получить символ из кода нажатой клавиши
Добра. Пускай, мы получили код нажатой клавиши. Пускай он будет 70. В...

передача нажатой клавиши с одного компонента другому
Доброй ночи. требуется при нажатии клавиш на одном компоненте передавать...

9
Wolflind
89 / 80 / 21
Регистрация: 17.03.2016
Сообщений: 340
Записей в блоге: 1
20.07.2018, 12:20 2
Цитата Сообщение от solare Посмотреть сообщение
И еще как код кнопки прописать не в названии окна, а в середине как при massagebox(pp.ToString())
Добавь Label и пиши в него код клавиши
Цитата Сообщение от solare Посмотреть сообщение
Теперь как сделать чтобы при повторном нажатии на форму1 выводился номер уже след нажатой клавиши.
меняй текст в Label в Fom2

Добавлено через 5 минут
И форму необязательно закрывать ее можно скрыть


Show();//показать форму
Hide(); //скрыть форму

Добавлено через 6 минут
Примерно так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
    public partial class Form1 : Form
    {
        Form2 form2 = new Form2();
        public Form1()
        {
            InitializeComponent();
            PreviewKeyDown += (s, e) =>
            {
                form2.label1.Text = e.KeyValue.ToString();
                form2.Show();
            };
        }
    }
0
solare
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 33
20.07.2018, 12:57  [ТС] 3
Спасибо за ответ. Не совсем понятно что значит PreviewKeyDown += (s, e) =>??

я так понимаю в вашем коде form2 уже должна быть создана с Label1, мы ее просто откроем? А как создать новую с лейблом?
0
Kazbek17
https://vk.com/a.tsarev83
52 / 57 / 21
Регистрация: 06.02.2012
Сообщений: 232
20.07.2018, 13:20 4
Цитата Сообщение от solare Посмотреть сообщение
я так понимаю в вашем коде form2 уже должна быть создана с Label1, мы ее просто откроем?
Да!
Цитата Сообщение от solare Посмотреть сообщение
А как создать новую с лейблом?
Можно играть одной формой. Просто прятать ее по определенному событию. Если не катит, то можно таким образом создавать новую форму с label.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public partial class Form1 : Form
    {
        
        Form2 form2;
        Label label;
        public Form1()
        {
            InitializeComponent();
           
            PreviewKeyDown += (s, e) =>
            {
                form2 = new Form2();
                label = new Label();
                label.Location = new System.Drawing.Point(22, 25);//<---- Сюда прописываем координаты X и Y
                form2.Controls.Add(label);
 
                label.Text = e.KeyValue.ToString();
                form2.Show();
            };
        }
    }
0
Wolflind
89 / 80 / 21
Регистрация: 17.03.2016
Сообщений: 340
Записей в блоге: 1
20.07.2018, 14:00 5
Лучший ответ Сообщение было отмечено solare как решение

Решение

Цитата Сообщение от solare Посмотреть сообщение
Не совсем понятно что значит PreviewKeyDown += (s, e) =>??
Это Лямбда-выражение

Добавлено через 1 минуту
https://metanit.com/sharp/tutorial/3.16.php

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

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
public partial class Form1 : Form
    {
        
        Form2 form2 = new Form2();;
        Label label = new Label();
        public Form1()
        {
            InitializeComponent();
            label.Location = new System.Drawing.Point(22, 25);//<---- Сюда прописываем координаты X и Y
            form2.Controls.Add(label);
           form2.Closing += (s, e) => 
           {      
                e.Cancel = false;
                Hide();
           }
 
            PreviewKeyDown += (s, e) =>
            {
                label.Text = e.KeyValue.ToString();
                form2.Show();
            };
           
 
 
        }
    }
1
solare
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 33
23.07.2018, 07:45  [ТС] 6
Запустила этот код, но все равно значение кода не меняется, а требует сначала закрыть окно.

Добавлено через 1 час 10 минут
и при закрытии форм2 закрывается и форм1.
0
Wolflind
89 / 80 / 21
Регистрация: 17.03.2016
Сообщений: 340
Записей в блоге: 1
23.07.2018, 07:50 7
Цитата Сообщение от solare Посмотреть сообщение
и при закрытии форм2 закрывается и форм1.
если вы использовали последний вариант то там есть небольшая ошибка вместо
C#
1
Hide();
нужно
C#
1
form2.Hide();
или
C#
1
((Form)s).Hide();
0
solare
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 33
23.07.2018, 11:53  [ТС] 8
Так пробовала, тогда строка form2.show() выдает ошибку 'Доступ к ликвидированному объекту невозможен'
0
Wolflind
89 / 80 / 21
Регистрация: 17.03.2016
Сообщений: 340
Записей в блоге: 1
23.07.2018, 12:20 9
Цитата Сообщение от Wolflind Посмотреть сообщение
e.Cancel = false;
C#
1
e.Cancel = true;
//это говорит что я сам обработал нажатие кнопки закрыть больше нечего делать не надо

Добавлено через 51 секунду
и там вроде как еще нужно проверить причину закрытие
1
solare
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 33
24.07.2018, 05:15  [ТС] 10
Добавила еще вот так:

C#
1
2
3
4
5
6
7
8
      form2.PreviewKeyDown += (s, e) =>
            {
                
                
                label.Text = e.KeyValue.ToString();
                form2.Show();
                
            };

и теперь работает как надо, не надо закрывать окно вручную.
спасибо Вам за помощь)
0
24.07.2018, 05:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2018, 05:15

Считывание нажатой клавиши в консоли некорректна (Символы двоятся)
using System; using System.Collections.Generic; using System.Linq; using...

Как в консоли можно получить значение нажатой пользователем клавиши
Как в консоли C# можно получить значение нажатой пользователем клавиши, или...

Передать данные одного обьекта класса в другой обьект на другой форме
Здравствуйте прочитал вот это...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru