Рейтинг:
2
OriginalGriff
Хм. Если я правильно вас понял, вы хотите принять все, кроме кавычек и двойных кавычек?
Если это так, то все просто:
^[^'"]*$
Будут делать это
kumarravishankar
public override string FreeTextRegEx { get { return @"^[a-zA-Z-0-9~+:;,/#&_@*%$!()\[\] ]*$"; } }
но при использовании
public override string FreeTextRegEx { get { return @"^[^'"]*$"; } }
получаю ошибку
OriginalGriff
И почему ты так думаешь?
Подсказка: что делает одна двойная кавычка в строке?
Bryian Tan
Вы должны использовать две двойные кавычки, чтобы избежать двойной кавычки
@"^[^'""]*$";
public override string FreeTextRegEx { get { return @"^[^'""]*$"; } }
kumarravishankar
согласно требованию не разрешили в текстовом поле,
Рейтинг:
1
BillWoodruff
... новое решение ...
Чтобы предотвратить ввод пользователем этих символов во время выполнения, а также перехватить событие "вставить" и удалить эти символы, вы можете использовать UserControl:
using System.Text;
using System.Windows.Forms;
namespace YourNameSpace
{
public partial class NoQuoteTextBox : TextBox
{
private const int WM_PASTE = 0x0302;
private StringBuilder sb;
public NoQuoteTextBox()
{
InitializeComponent();
}
protected override void WndProc(ref Message msg)
{
if (msg.Msg != WM_PASTE)
{
// good to go here
base.WndProc(ref msg);
}
else
{
// handle paste
sb = new StringBuilder(Clipboard.GetText());
if (sb.Length > 0)
{
sb.Replace("\'", string.Empty);
sb.Replace("\"", string.Empty);
if (sb.Length > 0)
{
Clipboard.SetText(sb.ToString());
base.WndProc(ref msg);
}
}
}
}
// handle user keyboard entry at run-time
private void NoQuoteTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = e.KeyChar == '\'' || e.KeyChar == '\"';
}
}
}
.. предыдущее решение ...
Почему бы не запретить ввод этих символов ?
private void SomeTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\'' || e.KeyChar == '\"')
{
e.Handled = true;
}
}
BillWoodruff
Если вы спрашиваете, вставил ли я этот фрагмент, то ответ будет "да". я также написал его и проверил: что-то с ним не так ? спасибо, Билл
OriginalGriff
Нет, Билл, я имел в виду, что блокировка клавиш quote и double quote не мешает пользователю вставлять символы.
Я должен помнить, что не следует использовать когитативные ярлыки ... :смеяться:
BillWoodruff
А-а, ладно :) Я понимаю вашу точку зрения; пример, конечно, не справляется с пастой.
BillWoodruff
@OriginalGriff
Если теперь пересмотренное решение не соответствует вашим спецификациям, мы получаем развод :)