Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
1 / 1 / 5
Регистрация: 02.02.2012
Сообщений: 67
1

Запретить вставку текста из буфера в текстбокс

10.08.2012, 10:00. Просмотров 7133. Ответов 11


Есть свой текст бокс, для чисел, ввод фильтруется по маске. Нужно запретить вставку из буфера некорректных данных. Из буфера можно вставлять Ctrl+V, Shift+Insert, и по правой кнопке мыши пункт "Вставить".
Нажатие Ctrl+V отлавливаю, Shift+Insert - можно сделать аналогично, а как отловить что вставляется через правую кнопку мыши?

Если нажато Ctrl+V делаю так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (((Control.ModifierKeys & Keys.Control) == Keys.Control))
            {
                if (e.KeyCode == Keys.V)
                {
                    String text = "";
                    IDataObject iData = Clipboard.GetDataObject();
                    if (iData.GetDataPresent(DataFormats.Text))
                    {
                        text = (String)iData.GetData(DataFormats.Text);
                    }
                    if (!string.IsNullOrEmpty(text))
                    {
// Здесь проверка на корректность вставляемых данных и либо вставка либо прерывание
                    }
                }
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2012, 10:00
Ответы с готовыми решениями:

Запретить делать вставку (paste) в текстбокс
Добрый день! У меня есть текстбокс в программе с#. Необходимо ограничить вставку текста (ctrl+v)...

Запретить вставку текста в TEdit из буфера обмена через Ctrl+V или через контекстное меню
Добрый день! Есть такой вопрос: Что нужно сделать, чтобы в TEdit не было возможности вставить...

Запретить вставку из буфера обмена в "RichTextBox"
Здравствуйте, нужно запретить вставку в rtb на второй форме. Добавил класс в пространство имен,...

Запретить вставку текста в текстовое поле
Всем привет! Как можно запретить вставку текста в текстовое поле, если в тексте который необходимо...

11
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
10.08.2012, 11:16 2
событие onMouseDown,onMouseClick;
там аргумент е,которые покажет какая клавиша нажата)
0
1 / 1 / 5
Регистрация: 02.02.2012
Сообщений: 67
10.08.2012, 11:20  [ТС] 3
Цитата Сообщение от Noob.net Посмотреть сообщение
событие onMouseDown,onMouseClick;
там аргумент е,которые покажет какая клавиша нажата)
это не проблема узнать что нажата клавиша мыши, проблема в том чтобы узнать что нажат пункт "Вставить"
0
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
10.08.2012, 11:22 4
аааа))))
я делал так.Записывал в Tag число(например 51(пункт 5,подпункт 1))
а потом swith'ал по входному параметру.Может есть проще варианты,но я сделал так.
0
1 / 1 / 5
Регистрация: 02.02.2012
Сообщений: 67
10.08.2012, 11:43  [ТС] 5
Цитата Сообщение от Noob.net Посмотреть сообщение
аааа))))
я делал так.Записывал в Tag число(например 51(пункт 5,подпункт 1))
а потом swith'ал по входному параметру.Может есть проще варианты,но я сделал так.
Что за ересь?
0
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
10.08.2012, 11:54 6
Цитата Сообщение от Lich777 Посмотреть сообщение
Что за ересь?
Почему ересь? вам известно для чего Tag?
http://msdn.microsoft.com/ru-r... l.tag.aspx

Добавлено через 3 минуты
C#
1
2
3
4
 protected void Menu1_MenuItemClick(object sender, MenuEventArgs e) 
    { 
        Response.Write(e.Item.Value); 
    }
вот такое есть еще
0
1 / 1 / 5
Регистрация: 02.02.2012
Сообщений: 67
10.08.2012, 13:06  [ТС] 7
Наверное произошло недопонимание, текст бокс у меня свой, но меню стандартное виндовое, которое вызывается правым кликом мыши по любому полю. если только это меню можно переопределить...
0
Миниатюры
Запретить вставку текста из буфера в текстбокс  
28 / 26 / 4
Регистрация: 16.11.2011
Сообщений: 147
11.08.2012, 03:15 8
поставь для него свой ContextMenuStrip и в нем сделай функции необходимые тебе. тот же "вставить", только уже с проверкой данных.
0
0 / 0 / 0
Регистрация: 31.05.2015
Сообщений: 4
20.07.2018, 10:26 9
попробуйте это: ShortcutsEnabled
0
Shogun31337
20.07.2018, 14:43
  #10

Не по теме:

Mixail167, ничего что тема 6-летней давности? :) Сомневаюсь, что ТС'а все еще заботит этот вопрос... :)

0
0 / 0 / 0
Регистрация: 31.05.2015
Сообщений: 4
21.07.2018, 19:30 11
Shogun31337, его-то может и не заботит, но вдруг кому-то другому это может помочь.
.
0
Администратор
Эксперт .NET
13116 / 10688 / 4408
Регистрация: 17.03.2014
Сообщений: 21,513
Записей в блоге: 1
21.07.2018, 20:57 12
Цитата Сообщение от Mixail167 Посмотреть сообщение
попробуйте это: ShortcutsEnabled
Запрет горячих клавиш плохая идея. Лучше использовать решение с обработкой сообщения WM_PASTE
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using System;
using System.Windows.Forms;
 
class MyTextBox : TextBox {
    protected override void WndProc(ref Message m) {
        const int WM_PASTE = 0x302;
        if (m.Msg == WM_PASTE && Clipboard.ContainsText()) {
            this.SelectedText = Clipboard.GetText().Replace('\n', ' ');
            return;
        }
        base.WndProc(ref m);
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2018, 20:57

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Запрет на вставку данных в текстбокс
Всем привет.подскажите как в wpf защитить текстбокс от скопированных данных при вставке.

Как сделать вставку из буфера?
скажите пожалуйста как сделать вставку из буфера, текста в эдит другой программы, а потом сделать...

Запрет на вставку из буфера в DBEdit
Подскажите как запретить вставку из буфера в DBEdit чтобы нельзя было вставить по ctrl+v по...

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


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

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

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