Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- protected override void WndProc(ref Message m)
- {
- if (m.Msg == WM_PASTE) //перехватываем сообщение "вставка"
- {
- //получаем строку из буфера обмена
- IDataObject obj = Clipboard.GetDataObject();
- string input = (string)obj.GetData(typeof(string));
- ulong tmpulong = 0;
- long tmplong = 0;
- if ((!Fractional) && (!Negative)) //только цифры
- {
- //пытаемся конвертировать в беззнаковый long
- if (!ulong.TryParse(input,out tmpulong))
- {
- //не получилось
- m.Result = (IntPtr)0; //отменяем вставку
- return;
- }
- }
- //отрицательные и положительные целые
- if ((!Fractional) && (Negative))
- {
- //пытаемся конвертировать в знаковый long
- if (!long.TryParse(input,out tmplong))
- {
- //не получилось
- m.Result = (IntPtr)0; //отменяем вставку
- return;
- }
- }
- //дробные
- if ((Fractional))
- {
- //пытаемся конвертировать в double
- if (!IsDouble(input))
- {
- //не получилось
- m.Result = (IntPtr)0; //отменяем вставку
- return;
- }
- //заменяем разделитель на установленный в контроле
- input = input.Replace('.', separator);
- input = input.Replace(',', separator);
- //добавляем лидирующий 0 если надо
- if (input.StartsWith(separator.ToString()))
- {
- input = input.Replace(separator.ToString(),
- "0" + separator.ToString());
- }
- if (input.StartsWith("-" + separator.ToString()))
- {
- input = input.Replace("-" + separator.ToString(),
- "-0" + separator.ToString());
- }
- //дробные не отрицательные
- if (!Negative)
- {
- if (input.StartsWith("-"))
- {
- m.Result = (IntPtr)0; //отменяем вставку
- return;
- }
- }
- //меняем содержимое буфера обмена
- Clipboard.SetText(input);
- }
- //вставка чисел целиком
- this.Text = string.Empty;
- }
- base.WndProc(ref m);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement