Hi,
I noticed that the OnKeyPress, OnKeyUp, and OnKeyDown don't 'work' the same as the microsoft text box, it's been documented here in this forum, and there were a few other events that don't work as expected.
Is there a full list of events in this and other controls that I should be wary about when converting all our .net controls to telerik ones?
I'm using version 2011.2.11.831.
Thanks,
Clive
I noticed that the OnKeyPress, OnKeyUp, and OnKeyDown don't 'work' the same as the microsoft text box, it's been documented here in this forum, and there were a few other events that don't work as expected.
Is there a full list of events in this and other controls that I should be wary about when converting all our .net controls to telerik ones?
I'm using version 2011.2.11.831.
Thanks,
Clive
3 Answers, 1 is accepted
0
Hello Clive,
Thank you for writing.
I have just tested those events with our latest version and all three of them are fired correctly:
We used to have such an issue with the events in the previous versions of our suite. However, in those versions you can still capture the events, by subscribing to the events of the hosted control:
I hope that you find this information useful. Should you have any other questions, do not hesitate to contact us.
Regards,
Stefan
the Telerik team
Thank you for writing.
I have just tested those events with our latest version and all three of them are fired correctly:
public
Form1()
{
InitializeComponent();
radTextBox1.KeyUp +=
new
KeyEventHandler(radTextBox1_KeyUp);
radTextBox1.KeyDown +=
new
KeyEventHandler(radTextBox1_KeyDown);
radTextBox1.KeyPress +=
new
KeyPressEventHandler(radTextBox1_KeyPress);
}
void
radTextBox1_KeyPress(
object
sender, KeyPressEventArgs e)
{
Console.WriteLine(
"Press"
);
}
void
radTextBox1_KeyDown(
object
sender, KeyEventArgs e)
{
Console.WriteLine(
"Down"
);
}
void
radTextBox1_KeyUp(
object
sender, KeyEventArgs e)
{
Console.WriteLine(
"UP"
);
}
We used to have such an issue with the events in the previous versions of our suite. However, in those versions you can still capture the events, by subscribing to the events of the hosted control:
radTextBox1.TextBoxElement.TextBoxItem.HostedControl.KeyDown +=
new
KeyEventHandler(HostedControl_KeyDown);
radTextBox1.TextBoxElement.TextBoxItem.HostedControl.KeyUp +=
new
KeyEventHandler(HostedControl_KeyUp);
radTextBox1.TextBoxElement.TextBoxItem.HostedControl.KeyPress +=
new
KeyPressEventHandler(HostedControl_KeyPress);
void
HostedControl_KeyPress(
object
sender, KeyPressEventArgs e)
{
}
void
HostedControl_KeyUp(
object
sender, KeyEventArgs e)
{
}
void
HostedControl_KeyDown(
object
sender, KeyEventArgs e)
{
}
I hope that you find this information useful. Should you have any other questions, do not hesitate to contact us.
Regards,
Stefan
the Telerik team
Q2’11 SP1 of RadControls for WinForms is available for download (see what's new); also available is the Q3'11 Roadmap for Telerik Windows Forms controls.
0
Clive
Top achievements
Rank 1
answered on 01 Nov 2011, 04:17 AM
Hi Stefan,
Sorry I didn't include a code example to what I mean. We have numerous controls that inherit from Microsoft System.Windows.Forms.xyz to Telerix controls. We override many OnEvent methods, and it was concerning that these did not fire when I moved them to Telerik controls. I'm wondering if there is a list of OnEvent methods that don't do what I'd expect, similarly if there is a list of events that do not fire in Telerik controls that would fire in System.Windows.Forms controls.
In the example below typing into the TextBox1 has the following output.
This is following a nice pattern. However the RadTextBox1 has the following output, that does not follow a similar pattern.
It looks like it's a bit of a mess with what I should be overriding, or listening to events.
My experience with .Net is 7 years. My experience with Rad is about 2 weeks.
Sorry I didn't include a code example to what I mean. We have numerous controls that inherit from Microsoft System.Windows.Forms.xyz to Telerix controls. We override many OnEvent methods, and it was concerning that these did not fire when I moved them to Telerik controls. I'm wondering if there is a list of OnEvent methods that don't do what I'd expect, similarly if there is a list of events that do not fire in Telerik controls that would fire in System.Windows.Forms controls.
In the example below typing into the TextBox1 has the following output.
OnEnter TextBox1
Enter TextBox1
OnKeyDown TextBox1
KeyDown TextBox1
OnKeyPress TextBox1
KeyPress TextBox1
OnKeyUp TextBox1
KeyUp TextBox1
This is following a nice pattern. However the RadTextBox1 has the following output, that does not follow a similar pattern.
OnEnter RadTextBox1
KeyDown RadTextBox1
KeyPress RadTextBox1
KeyUp RadTextBox1
It looks like it's a bit of a mess with what I should be overriding, or listening to events.
Imports
Telerik.WinControls.UI
Public
Class
Form5
Inherits
System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected
Overrides
Sub
Dispose(
ByVal
disposing
As
Boolean
)
Try
If
disposing
AndAlso
components IsNot
Nothing
Then
components.Dispose()
End
If
Finally
MyBase
.Dispose(disposing)
End
Try
End
Sub
'Required by the Windows Form Designer
Private
components
As
System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private
Sub
InitializeComponent()
Me
.RadTextBox1 =
New
RadicalTextBox()
Me
.ListBox1 =
New
System.Windows.Forms.ListBox()
Me
.TextBox1 =
New
BoringTextBox()
CType
(
Me
.RadTextBox1, System.ComponentModel.ISupportInitialize).BeginInit()
Me
.SuspendLayout()
'
'RadTextBox1
'
Me
.RadTextBox1.Location =
New
System.Drawing.Point(41, 25)
Me
.RadTextBox1.Name =
"RadTextBox1"
Me
.RadTextBox1.Size =
New
System.Drawing.Size(100, 20)
Me
.RadTextBox1.TabIndex = 1
Me
.RadTextBox1.TabStop =
False
Me
.RadTextBox1.Text =
"RadTextBox1"
'
'ListBox1
'
Me
.ListBox1.FormattingEnabled =
True
Me
.ListBox1.Location =
New
System.Drawing.Point(21, 51)
Me
.ListBox1.Name =
"ListBox1"
Me
.ListBox1.Size =
New
System.Drawing.Size(234, 186)
Me
.ListBox1.TabIndex = 0
'
'TextBox1
'
Me
.TextBox1.Location =
New
System.Drawing.Point(155, 25)
Me
.TextBox1.Name =
"TextBox1"
Me
.TextBox1.Size =
New
System.Drawing.Size(100, 20)
Me
.TextBox1.TabIndex = 2
Me
.TextBox1.TabStop =
False
Me
.TextBox1.Text =
"TextBox1"
'
'Form5
'
Me
.AutoScaleDimensions =
New
System.Drawing.SizeF(6.0!, 13.0!)
Me
.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me
.ClientSize =
New
System.Drawing.Size(292, 273)
Me
.Controls.Add(
Me
.ListBox1)
Me
.Controls.Add(
Me
.TextBox1)
Me
.Controls.Add(
Me
.RadTextBox1)
Me
.Name =
"Form5"
Me
.Text =
"Form5"
CType
(
Me
.RadTextBox1, System.ComponentModel.ISupportInitialize).EndInit()
Me
.ResumeLayout(
False
)
Me
.PerformLayout()
End
Sub
Friend
WithEvents
RadTextBox1
As
RadicalTextBox
Friend
WithEvents
ListBox1
As
System.Windows.Forms.ListBox
Friend
WithEvents
TextBox1
As
BoringTextBox
Public
Shared
lb
As
ListBox
Private
Sub
Form5_Load(sender
As
Object
, e
As
System.EventArgs)
Handles
Me
.Load
lb = ListBox1
lb.Focus()
End
Sub
End
Class
Public
Class
RadicalTextBox
Inherits
RadTextBox
Public
Overrides
Property
ThemeClassName
As
String
Get
Return
GetType
(RadTextBox).FullName
End
Get
Set
(value
As
String
)
MyBase
.ThemeClassName = value
End
Set
End
Property
Protected
Overrides
Sub
OnKeyUp(e
As
System.Windows.Forms.KeyEventArgs)
Form5.lb.Items.Add(
"OnKeyUp "
+
Me
.Name)
System.Console.WriteLine(
"OnKeyUp "
+
Me
.Name)
MyBase
.OnKeyUp(e)
End
Sub
Protected
Overrides
Sub
OnKeyDown(e
As
System.Windows.Forms.KeyEventArgs)
Form5.lb.Items.Add(
"OnKeyDown "
+
Me
.Name)
System.Console.WriteLine(
"OnKeyDown "
+
Me
.Name)
MyBase
.OnKeyDown(e)
End
Sub
Protected
Overrides
Sub
OnKeyPress(e
As
System.Windows.Forms.KeyPressEventArgs)
Form5.lb.Items.Add(
"OnKeyPress "
+
Me
.Name)
System.Console.WriteLine(
"OnKeyPress "
+
Me
.Name)
MyBase
.OnKeyPress(e)
End
Sub
Protected
Overrides
Sub
OnEnter(e
As
System.EventArgs)
Form5.lb.Items.Add(
"OnEnter "
+
Me
.Name)
System.Console.WriteLine(
"OnEnter "
+
Me
.Name)
MyBase
.OnEnter(e)
End
Sub
Private
Sub
RadicalTextBox_Enter(sender
As
Object
, e
As
System.EventArgs)
Handles
Me
.Enter
Form5.lb.Items.Add(
"Enter "
+
Me
.Name)
End
Sub
Private
Sub
RadicalTextBox_KeyDown(sender
As
Object
, e
As
System.Windows.Forms.KeyEventArgs)
Handles
Me
.KeyDown
Form5.lb.Items.Add(
"KeyDown "
+
Me
.Name)
System.Console.WriteLine(
"KeyDown "
+
Me
.Name)
End
Sub
Private
Sub
RadicalTextBox_KeyPress(sender
As
Object
, e
As
System.Windows.Forms.KeyPressEventArgs)
Handles
Me
.KeyPress
Form5.lb.Items.Add(
"KeyPress "
+
Me
.Name)
System.Console.WriteLine(
"KeyPress "
+
Me
.Name)
End
Sub
Private
Sub
RadicalTextBox_KeyUp(sender
As
Object
, e
As
System.Windows.Forms.KeyEventArgs)
Handles
Me
.KeyUp
Form5.lb.Items.Add(
"KeyUp "
+
Me
.Name)
System.Console.WriteLine(
"KeyUp "
+
Me
.Name)
End
Sub
End
Class
Public
Class
BoringTextBox
Inherits
TextBox
Protected
Overrides
Sub
OnKeyUp(e
As
System.Windows.Forms.KeyEventArgs)
Form5.lb.Items.Add(
"OnKeyUp "
+
Me
.Name)
System.Console.WriteLine(
"OnKeyUp "
+
Me
.Name)
MyBase
.OnKeyUp(e)
End
Sub
Protected
Overrides
Sub
OnKeyDown(e
As
System.Windows.Forms.KeyEventArgs)
Form5.lb.Items.Add(
"OnKeyDown "
+
Me
.Name)
System.Console.WriteLine(
"OnKeyDown "
+
Me
.Name)
MyBase
.OnKeyDown(e)
End
Sub
Protected
Overrides
Sub
OnKeyPress(e
As
System.Windows.Forms.KeyPressEventArgs)
Form5.lb.Items.Add(
"OnKeyPress "
+
Me
.Name)
System.Console.WriteLine(
"OnKeyPress "
+
Me
.Name)
MyBase
.OnKeyPress(e)
End
Sub
Protected
Overrides
Sub
OnEnter(e
As
System.EventArgs)
Form5.lb.Items.Add(
"OnEnter "
+
Me
.Name)
System.Console.WriteLine(
"OnEnter "
+
Me
.Name)
MyBase
.OnEnter(e)
End
Sub
Private
Sub
BoringTextBox_Enter(sender
As
Object
, e
As
System.EventArgs)
Handles
Me
.Enter
Form5.lb.Items.Add(
"Enter "
+
Me
.Name)
System.Console.WriteLine(
"Enter "
+
Me
.Name)
End
Sub
Private
Sub
BoringTextBox_KeyDown(sender
As
Object
, e
As
System.Windows.Forms.KeyEventArgs)
Handles
Me
.KeyDown
Form5.lb.Items.Add(
"KeyDown "
+
Me
.Name)
System.Console.WriteLine(
"KeyDown "
+
Me
.Name)
End
Sub
Private
Sub
BoringTextBox_KeyPress(sender
As
Object
, e
As
System.Windows.Forms.KeyPressEventArgs)
Handles
Me
.KeyPress
Form5.lb.Items.Add(
"KeyPress "
+
Me
.Name)
System.Console.WriteLine(
"KeyPress "
+
Me
.Name)
End
Sub
Private
Sub
BoringTextBox_KeyUp(sender
As
Object
, e
As
System.Windows.Forms.KeyEventArgs)
Handles
Me
.KeyUp
Form5.lb.Items.Add(
"KeyUp "
+
Me
.Name)
System.Console.WriteLine(
"KeyUp "
+
Me
.Name)
End
Sub
End
Class
My experience with .Net is 7 years. My experience with Rad is about 2 weeks.
- OS version and applied service packs
Microsoft Windows Server 2003, Standard Edition, Service Pack 2
- Regional and language settings, if different from En-US
English (Australia)
- .NET version (.NET2, .NET3, .NET3.5)
.NET 4.0.30319 SP1Rel, Visual Studio 2010 Version 10.0.40219.1 SP1Rel
- Exact version of the Telerik product
Runtime Version v2.0.50727, Version 2011.2.11.831
0
Hi Clive,
Thank you for writing.
In order to have the exact events as in the standard text box, you should replace the default RadTextBoxItem of RadTextBox. In the attachment, you can find a sample application demonstrating this approach. If this solution does not satisfy your needs, please describe your scenario and why you need to override the methods (OnKeyDown, OnKeyPress and OnKeyUp). This will allow us to think of a possible solution that matches your case.
All the best,
Stefan
the Telerik team
Thank you for writing.
In order to have the exact events as in the standard text box, you should replace the default RadTextBoxItem of RadTextBox. In the attachment, you can find a sample application demonstrating this approach. If this solution does not satisfy your needs, please describe your scenario and why you need to override the methods (OnKeyDown, OnKeyPress and OnKeyUp). This will allow us to think of a possible solution that matches your case.
All the best,
Stefan
the Telerik team
Q2’11 SP1 of RadControls for WinForms is available for download (see what's new); also available is the Q3'11 Roadmap for Telerik Windows Forms controls.