I am using the radMasked editBox for currency entry and am having a few issues.
Mask = c
MaskType = Numeric
1. Negative values are not handled nicely.
The only way to stop a currency field being negative is to press the - sign.
You should be able to a. Most importantly select the - sign and press delete or backspace
b. Select all the text including the - sign and type over it (currently the new value is still negative)
c. press the + sign should make it positive
2. Is there a way to stop the user being able to enter negative values as we don't want them most time, and all i can think to do is try to stop the - keypress before it is filtered to the control.
3. Another important issue is typing over existing values
if you have a value of $800.12 entered and you select just the 8 and change it to another number lets say 7 the result is $7.12, it took out the 0's following the 8.
This is potentially hazardous, a user could easily rush through and not notice the 0's have been removed and then someone could be out quite a bit of money.
Mask = c
MaskType = Numeric
1. Negative values are not handled nicely.
The only way to stop a currency field being negative is to press the - sign.
You should be able to a. Most importantly select the - sign and press delete or backspace
b. Select all the text including the - sign and type over it (currently the new value is still negative)
c. press the + sign should make it positive
2. Is there a way to stop the user being able to enter negative values as we don't want them most time, and all i can think to do is try to stop the - keypress before it is filtered to the control.
3. Another important issue is typing over existing values
if you have a value of $800.12 entered and you select just the 8 and change it to another number lets say 7 the result is $7.12, it took out the 0's following the 8.
This is potentially hazardous, a user could easily rush through and not notice the 0's have been removed and then someone could be out quite a bit of money.
7 Answers, 1 is accepted
0

Scott
Top achievements
Rank 1
answered on 25 Nov 2010, 01:42 AM
Another issue i just found is
4. if you copy a currencey from say notepad with a value like 80.00, then select all the text in the radMaskedEditbox
and press CTRL+V (paste) the result in the Masked edit box is as follows $080.00.00 note the two decimal points, this can not be achived by simple typing a second decimal so the paste should not allow it.
4. if you copy a currencey from say notepad with a value like 80.00, then select all the text in the radMaskedEditbox
and press CTRL+V (paste) the result in the Masked edit box is as follows $080.00.00 note the two decimal points, this can not be achived by simple typing a second decimal so the paste should not allow it.
0

Scott
Top achievements
Rank 1
answered on 25 Nov 2010, 04:27 AM
And one more.
5. The MaxLength does not function.
I have opened the control editor for the RadMaskedEditBox and under the RadMaskedEditBoxItem treenode there is a property for MaxLength, setting this has no effect what so ever.
We use the RadMaskedEditBox to enter cost fields which are saved to the database so it would be nice to limit these to only values that the SQL server money field will accept, Max length would do the trick quite nicely.
I know we could add a validation routine to our form to check this and report to the user about invalid values, but even better is them not being able to add them in the first place, and this would save us a lot of repeat code adding validation.
Is there another way to set the max length or limit the values able to be entered.
5. The MaxLength does not function.
I have opened the control editor for the RadMaskedEditBox and under the RadMaskedEditBoxItem treenode there is a property for MaxLength, setting this has no effect what so ever.
We use the RadMaskedEditBox to enter cost fields which are saved to the database so it would be nice to limit these to only values that the SQL server money field will accept, Max length would do the trick quite nicely.
I know we could add a validation routine to our form to check this and report to the user about invalid values, but even better is them not being able to add them in the first place, and this would save us a lot of repeat code adding validation.
Is there another way to set the max length or limit the values able to be entered.
0
Accepted

Richard Slade
Top achievements
Rank 2
answered on 25 Nov 2010, 11:46 AM
Hello Scott,
There are quite a few questions here so I may need to answer them over a few replies.
Please see the code below. It is just a RadMaskedEditBox on a form.
This should address a couple of your issues:
1: Does not allow minus values
2: Corrects the copy and paste problem
I will try and get back to you with a workaround to your other issues.
hope that helps
Richard
There are quite a few questions here so I may need to answer them over a few replies.
Please see the code below. It is just a RadMaskedEditBox on a form.
This should address a couple of your issues:
1: Does not allow minus values
2: Corrects the copy and paste problem
I will try and get back to you with a workaround to your other issues.
Imports
Telerik.WinControls
Imports
Telerik.WinControls.UI
Imports
System
Public
Class
Form1
Private
WithEvents
m_TextBox
As
RadTextBoxItem
Private
Sub
Form1_Load(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
Me
.RadMaskedEditBox1.Mask =
"c"
Me
.RadMaskedEditBox1.MaskType = MaskType.Numeric
Me
.RadMaskedEditBox1.MaskedEditBoxElement.TextBoxItem.MaxLength = 5
m_TextBox =
Me
.RadMaskedEditBox1.MaskedEditBoxElement.TextBoxItem
End
Sub
Private
Sub
TextBox_KeyPress(
ByVal
sender
As
System.
Object
,
ByVal
e
As
KeyPressEventArgs)
Handles
m_TextBox.KeyPress
' use this code to stop minus being entered
If
e.KeyChar =
CChar
(
"-"
)
Then
e.Handled =
True
End
If
End
Sub
Private
Sub
TextBox_KeyDown(
ByVal
sender
As
System.
Object
,
ByVal
e
As
KeyEventArgs)
Handles
m_TextBox.KeyDown
' use this to correct the copy paste issue
Try
If
e.KeyCode = Keys.V
AndAlso
(e.Modifiers
And
Keys.Control) <> Keys.None
Then
Me
.RadMaskedEditBox1.Value = Clipboard.GetText()
e.Handled =
True
e.SuppressKeyPress =
True
End
If
Catch
ex
As
FormatException
e.Handled =
False
e.SuppressKeyPress =
False
End
Try
End
Sub
End
Class
hope that helps
Richard
0
Accepted

Richard Slade
Top achievements
Rank 2
answered on 25 Nov 2010, 12:11 PM
Hello Scott,
I tried the internal TextBoxItem for MaxLength as well, but this didn't function as I expected, so the following code has been revised to include a max length functionality.
I hope this all helps. Please mark as answer anything you found useful and if you need more information, just let me know.
Richard
I tried the internal TextBoxItem for MaxLength as well, but this didn't function as I expected, so the following code has been revised to include a max length functionality.
I hope this all helps. Please mark as answer anything you found useful and if you need more information, just let me know.
Richard
Imports
Telerik.WinControls
Imports
Telerik.WinControls.UI
Imports
System
Public
Class
Form1
Private
WithEvents
m_TextBox
As
RadTextBoxItem
Private
Sub
Form1_Load(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
Me
.RadMaskedEditBox1.Mask =
"c"
Me
.RadMaskedEditBox1.MaskType = MaskType.Numeric
m_TextBox =
Me
.RadMaskedEditBox1.MaskedEditBoxElement.TextBoxItem
' specify the number of digits. In this case 6 = a max of 9,999.99 (6 integer characters)
Me
.RadMaskedEditBox1.MaxLength = 6
End
Sub
Private
Sub
TextBox_TextChanging(
ByVal
sender
As
System.
Object
,
ByVal
e
As
TextChangingEventArgs)
Handles
m_TextBox.TextChanging
' use this to stop long input
Dim
chrArray()
As
Char
Dim
numbers
As
Integer
Dim
result
As
Integer
chrArray = m_TextBox.Text.ToCharArray
For
intCounter = 0
To
chrArray.Length - 1
If
Integer
.TryParse(chrArray(intCounter), result)
Then
numbers = numbers + 1
End
If
If
numbers >
Me
.RadMaskedEditBox1.MaxLength
Then
e.Cancel =
True
End
If
Next
End
Sub
Private
Sub
TextBox_KeyPress(
ByVal
sender
As
System.
Object
,
ByVal
e
As
KeyPressEventArgs)
Handles
m_TextBox.KeyPress
' use this code to stop minus being entered
If
e.KeyChar =
CChar
(
"-"
)
Then
e.Handled =
True
End
If
End
Sub
Private
Sub
TextBox_KeyDown(
ByVal
sender
As
System.
Object
,
ByVal
e
As
KeyEventArgs)
Handles
m_TextBox.KeyDown
' use this to correct the copy paste issue
Try
If
e.KeyCode = Keys.V
AndAlso
(e.Modifiers
And
Keys.Control) <> Keys.None
Then
Me
.RadMaskedEditBox1.Value = Clipboard.GetText()
e.Handled =
True
e.SuppressKeyPress =
True
End
If
Catch
ex
As
FormatException
e.Handled =
False
e.SuppressKeyPress =
False
End
Try
End
Sub
End
Class
0
Accepted

Emanuel Varga
Top achievements
Rank 1
answered on 25 Nov 2010, 01:06 PM
Hello Scott,
Ok, let's take them one by one,
First, for the Num + sign to make the value positive and for the Num - to make the value negative you can use the following:
For the copy paste you can use Richards suggestion, it should do what you need.
Hope this helps, if you have any other questions or comments, please let me know,
Best Regards,
Emanuel Varga
Telerik WinForms MVP
Ok, let's take them one by one,
First, for the Num + sign to make the value positive and for the Num - to make the value negative you can use the following:
public
class
CustomMaskedEditBox : RadMaskedEditBox
{
public
override
string
ThemeClassName
{
get
{
return
typeof
(RadMaskedEditBox).Name;
}
}
public
CustomMaskedEditBox()
{
this
.textBoxItem.KeyDown +=
new
KeyEventHandler(TextBoxItem_KeyDown);
}
void
TextBoxItem_KeyDown(
object
sender, KeyEventArgs e)
{
double
value;
double
.TryParse(
this
.Value.ToString(),
out
value);
if
(e.KeyValue == 109)
{
if
(value <= 0)
{
value *= -1;
this
.Value = value;
}
}
if
(e.KeyValue == 107)
// plus sign, the Keys.oemplus is not recognized as the num + sign
{
if
(value <= 0)
{
value *= -1;
this
.Value = value;
}
}
}
}
For the copy paste you can use Richards suggestion, it should do what you need.
Hope this helps, if you have any other questions or comments, please let me know,
Best Regards,
Emanuel Varga
Telerik WinForms MVP
0

Scott
Top achievements
Rank 1
answered on 26 Nov 2010, 12:15 AM
Thanks for the quick responses guys,
these workarounds did fix my problems, I am adding them all to a class that inherits from the radMaskeditBox and making a new currencey text box to use within our program.
The only real issue we have left was the point 3. from my first post in this thread.
Following your samples I have also coded a fix to allow deleting the minus sign from the start to make a positive number
You just add this code to a class inheriting the RadMaskEditBox
these workarounds did fix my problems, I am adding them all to a class that inherits from the radMaskeditBox and making a new currencey text box to use within our program.
The only real issue we have left was the point 3. from my first post in this thread.
Following your samples I have also coded a fix to allow deleting the minus sign from the start to make a positive number
You just add this code to a class inheriting the RadMaskEditBox
Private Const WM_KEYDOWN As Long = &H100
Protected Overrides Function ProcessKeyPreview(ByRef m As System.Windows.Forms.Message) As Boolean
' If allowing neagative values this is a fix to allow deleting the minus sign
If m.Msg = WM_KEYDOWN Then
If m.WParam = Keys.Back Or m.WParam = Keys.Delete Then
If Me.Value < 0 Then
If Me.SelectedText = "-" Then
Me.Value *= -1
End If
End If
End If
End If
Return MyBase.ProcessKeyPreview(m)
End Function
0

Richard Slade
Top achievements
Rank 2
answered on 26 Nov 2010, 12:26 AM
Hello,
Glad that this is all sorted for you and we were able to help.
Regards,
Richard
Glad that this is all sorted for you and we were able to help.
Regards,
Richard