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

Обработчик комбинации клавиш Ctrl+S

28.02.2014, 07:48. Показов 3746. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, пожалуйста, как правильно обработать нажатие комбинации клавиш Ctrl+S так, чтобы при нажатии этой комбинации в случае, если текущий файл уже был сохранен, то в него были добавлены внесенные изменения (в данном случае текст), а если нет, то был выведен диалог сохранения файла?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2014, 07:48
Ответы с готовыми решениями:

Стандартный обработчик ctrl+c ctrl+v
У меня на форме есть TextBox. В котором по событию KeyPress я обрабатываю ввод только хексов...

Глобальный перехват сочетания клавиш Ctrl+V
Не могу разобраться и никто не может мне помочь в этом вопросе, уже столько всего перепробовал!...

Отслеживание нажатие клавиш ctrl+alt+A
Подскажите плиз как отследить нажатие клавиш ctrl+alt+A на форме? Так: private void...

Отслеживание нажатия комбинации клавиш в пределах формы
Нужно что бы при нажатие комбинации кнопок допусти "Ctrl+S" выполнялся код. И даже если форма не...

4
62 / 49 / 37
Регистрация: 08.07.2012
Сообщений: 181
29.03.2014, 22:44 2
Лучший ответ Сообщение было отмечено Vi Sparks как решение

Решение

http://i-fotki.info/16/6fec521... 7.png.html

Для начала нужно добавить using в самое начало кода
C#
1
using System.IO
и теперь непосредственно код:

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
        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            //если нажаты кнопки Ctl + S
            if (e.Control == true && e.KeyCode == Keys.S)
            {
     
                if (label1.Text == "Путь")
                {
                    //устанавливаем расширение в котором будит сохраняться файл
                    saveFileDialog1.DefaultExt = ".txt";
 
                    //стандартное имя при сохранении
                    saveFileDialog1.FileName = "Name";
 
                    //открываем диалоговое окно
                    saveFileDialog1.ShowDialog();
 
                    //присваеваем лейблу путь сохранения
                    label1.Text = saveFileDialog1.FileName;
 
                    //само сохранение
                    File.WriteAllText(label1.Text, textBox1.Text);
                }
                else
                {
                    //сохранение
                    File.WriteAllText(label1.Text, textBox1.Text);
                }
                
            }
        }
Если возникнут вопросы, пишите, помогу чем смогу)

_______________________________________________
1
5 / 4 / 1
Регистрация: 24.09.2016
Сообщений: 398
15.01.2022, 05:44 3
NekoKira, скажите пожалста, почему у меня с вашим кодом при нажатии на любую клавишу e.KeyCode равно Menu
C#
1
var v2 = e.KeyCode;  //v2 = Menu
хоть с флагом
C#
1
this.KeyPreview = true;
хоть без него

Добавлено через 12 минут
я извиняюсь . .. v2 = ControlKey при нажатии любой клавиши, т.е. у меня VS реагирует только на первую нажатую клавишу, а сочетание клавиш не работает

Добавлено через 4 минуты
вот весь код
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
using System.Windows.Forms;
using System.IO;
 
namespace MousePosition
{
    public partial class Form1 : Form
    {
        public Form1()
        {            
            InitializeComponent();
            this.KeyPreview = true;
        }
        private void Form1_Load(object sender, System.EventArgs e)
        {
            //Form1.KeyPreview = true;
        }
 
        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            var v1 = e.Control; //true
            var v2 = e.KeyCode; //v2 = ControlKey
            if (e.Control && e.KeyCode == Keys.S)
            {
                //сюда не попадаю
            }
        }
    }
}
0
HF
1158 / 744 / 181
Регистрация: 09.09.2011
Сообщений: 2,303
Записей в блоге: 2
15.01.2022, 15:25 4
Цитата Сообщение от DLD Посмотреть сообщение
у меня VS реагирует только на первую нажатую клавишу, а сочетание клавиш не работает
На всякий случай подскажу - если вы в режиме отладки поставите брейкпонйты в методе textBox1_KeyDown, то никогда не попадёте в тот блок. В KeyCode всегда будет ControlKey или что-то другое что вы нажимали после попадания в точку отладки.
0
5 / 4 / 1
Регистрация: 24.09.2016
Сообщений: 398
15.01.2022, 15:42 5
HF, вот так работает с брейкпоинтом и без него
C#
1
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.S)
0
15.01.2022, 15:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2022, 15:42
Помогаю со студенческими работами здесь

Как отправить в активное окно комбинацию клавиш Ctrl+T?
Как отправить в активное окно комбинацию клавиш Ctrl t ?

Как отправить форме сочетание клавиш - Ctrl+C - для копирования выделенного текста?
Всем доброго дня. Вопрос в следующем. На форме есть некий выделенный текст, нужно его скопировать...

Обработчик нажатия клавиш в не активной форме
Доброго времени суток.https://www.cyberforum.ru/csharp-net/thread687082.html вот ссылка которая...

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


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

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

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