List of 'missing' events

4 posts, 0 answers
  1. Clive
    Clive avatar
    12 posts
    Member since:
    Sep 2011

    Posted 27 Oct 2011 Link to this post

    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
  2. Stefan
    Admin
    Stefan avatar
    2891 posts

    Posted 31 Oct 2011 Link to this post

    Hello Clive,

    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.

  3. UI for WinForms is Visual Studio 2017 Ready
  4. Clive
    Clive avatar
    12 posts
    Member since:
    Sep 2011

    Posted 31 Oct 2011 Link to this post

    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.

    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


  5. Stefan
    Admin
    Stefan avatar
    2891 posts

    Posted 03 Nov 2011 Link to this post

    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

    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.

Back to Top