RadContextMenu problem

14 posts, 1 answers
  1. Truong
    Truong avatar
    9 posts
    Member since:
    Sep 2011

    Posted 23 Apr 2012 Link to this post

    Dear

    I am trying to use RadContextMenu with RadListControl and it have one problem with current version 12.1.321.0 . When I click one context menu item the Click event occur twice. The context menu was assigned to RadListControl using RadContextMenu property.

    Please have to solve this problem.
  2. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 23 Apr 2012 Link to this post

    Hello, 

    When assigning a standard context menu via the ContextMenu property to a RadListControl I cannot replicate your issue. Please try this sample and let me know if this works for you

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Telerik.WinControls;
    using Telerik.WinControls.UI;
     
    namespace RadControlsWinFormsApp1
    {
        public partial class Form1 : Form
        {
     
            public Form1()
            {
                InitializeComponent();
     
                List<Item> items = new List<Item>();
                int i = 0;
                while(i <= 100)
                {
                    items.Add(new Item(i, "Item " + i.ToString()));
                    i++;
                }
     
                this.radListControl1.DataSource = items;
                this.radListControl1.DisplayMember = "Name";
                this.radListControl1.ValueMember = "Id";
     
                System.Windows.Forms.ContextMenu menu = new ContextMenu();
                MenuItem item1 = new MenuItem("The Menu Item");
                menu.MenuItems.Add(item1);
                item1.Click +=new EventHandler(item1_Click);
                this.radListControl1.ContextMenu = menu;
     
            }
     
            void item1_Click(object sender, EventArgs e)
            {
                RadMessageBox.Show("Clicked");
            }
     
        }
     
        public class Item
        {
            public Item()
            { }
     
            public Item(int id, string name)
            {
                Id = id;
                Name = name;
            }
     
            public int Id
            { get; set; }
     
            public string Name
            { get; set; }
     
        }
     
     
    }
  3. UI for WinForms is Visual Studio 2017 Ready
  4. Stefan
    Admin
    Stefan avatar
    2890 posts

    Posted 23 Apr 2012 Link to this post

    Hello Truong,

    Thank you for writing.

    I have tested the described behavior with RadContextMenu and RadListControl and the event was fired just once. Please refer to the attached sample. 

    If you continue experiencing such a behavior, I will suggest that you open new support ticket and provide us with your project there, so we can investigate the reasons causing the undesired behavior, and provide you with adequate support.
     
    Greetings,
    Stefan
    the Telerik team
    RadControls for WinForms Q1'12 release is now live! Check out what's new or download a free trial >>
  5. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 23 Apr 2012 Link to this post

    Hi Truong, 

    Just to add to that, make sure you aren't adding any event handlers in a place where they might be added multiple times. (This happened to me once) each time you would click it would add another event handler. This may be the cause of your issue
    Regards, 
    Richard
  6. Truong
    Truong avatar
    9 posts
    Member since:
    Sep 2011

    Posted 23 Apr 2012 Link to this post

    Dear Stefan,

    Thanks for your reply. I have checked your sample. It the same my program. But there is one different I used RadMenuButtonItem with RadContextMenu instead of  RadMenuItem in your sample. I use several RadContextMenu in my program all of them have the same problem.

    Please check it again
  7. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 24 Apr 2012 Link to this post

    Hello, 

    With the latest version, I still cannot replicate this issue.
    I have added a RadMenuButtonItem to the context menu as you have specified and it doesn't produce the behaviour you specified. 

    Please can you try the following example: 

    Form1 Designer File
    namespace RadControlsWinFormsApp1
    {
        partial class Form1
        {
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.IContainer components = null;
     
            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
     
            #region Windows Form Designer generated code
     
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                this.components = new System.ComponentModel.Container();
                this.radListControl1 = new Telerik.WinControls.UI.RadListControl();
                this.radContextMenuManager1 = new Telerik.WinControls.UI.RadContextMenuManager();
                this.radContextMenu1 = new Telerik.WinControls.UI.RadContextMenu(this.components);
                this.radMenuItem1 = new Telerik.WinControls.UI.RadMenuItem();
                this.radMenuButtonItem1 = new Telerik.WinControls.UI.RadMenuButtonItem();
                ((System.ComponentModel.ISupportInitialize)(this.radListControl1)).BeginInit();
                this.SuspendLayout();
                //
                // radListControl1
                //
                this.radListControl1.CaseSensitiveSort = true;
                this.radListControl1.ItemHeight = 18;
                this.radListControl1.Location = new System.Drawing.Point(147, 56);
                this.radListControl1.Name = "radListControl1";
                this.radContextMenuManager1.SetRadContextMenu(this.radListControl1, this.radContextMenu1);
                this.radListControl1.Size = new System.Drawing.Size(363, 518);
                this.radListControl1.TabIndex = 0;
                this.radListControl1.Text = "radListControl1";
                //
                // radContextMenu1
                //
                this.radContextMenu1.Items.AddRange(new Telerik.WinControls.RadItem[] {
                this.radMenuItem1,
                this.radMenuButtonItem1});
                //
                // radMenuItem1
                //
                this.radMenuItem1.AccessibleDescription = "radMenuItem1";
                this.radMenuItem1.AccessibleName = "radMenuItem1";
                this.radMenuItem1.Name = "radMenuItem1";
                this.radMenuItem1.Text = "radMenuItem1";
                this.radMenuItem1.Visibility = Telerik.WinControls.ElementVisibility.Visible;
                //
                // radMenuButtonItem1
                //
                this.radMenuButtonItem1.AccessibleDescription = "radMenuButtonItem1";
                this.radMenuButtonItem1.AccessibleName = "radMenuButtonItem1";
                //
                //
                //
                this.radMenuButtonItem1.ButtonElement.AccessibleDescription = "radMenuButtonItem1";
                this.radMenuButtonItem1.ButtonElement.AccessibleName = "radMenuButtonItem1";
                this.radMenuButtonItem1.Name = "radMenuButtonItem1";
                this.radMenuButtonItem1.Text = "radMenuButtonItem1";
                this.radMenuButtonItem1.Visibility = Telerik.WinControls.ElementVisibility.Visible;
                //
                // Form1
                //
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(801, 628);
                this.Controls.Add(this.radListControl1);
                this.Name = "Form1";
                this.Text = "Form1";
                ((System.ComponentModel.ISupportInitialize)(this.radListControl1)).EndInit();
                this.ResumeLayout(false);
     
            }
     
            #endregion
     
            private Telerik.WinControls.UI.RadListControl radListControl1;
            private Telerik.WinControls.UI.RadContextMenuManager radContextMenuManager1;
            private Telerik.WinControls.UI.RadContextMenu radContextMenu1;
            private Telerik.WinControls.UI.RadMenuItem radMenuItem1;
            private Telerik.WinControls.UI.RadMenuButtonItem radMenuButtonItem1;
        }
    }

    Form 1 
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Telerik.WinControls;
    using Telerik.WinControls.UI;
     
    namespace RadControlsWinFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
     
                List<Item> items = new List<Item>();
                int i = 0;
                while (i <= 100)
                {
                    items.Add(new Item(i, "Item " + i.ToString()));
                    i++;
                }
     
                this.radListControl1.DataSource = items;
                this.radListControl1.DisplayMember = "Name";
                this.radListControl1.ValueMember = "Id";
     
                radMenuItem1.Click += new EventHandler(item1_Click);
                radMenuButtonItem1.Click += new EventHandler(radMenuButtonItem1_Click);
            }
     
            void radMenuButtonItem1_Click(object sender, EventArgs e)
            {
                RadMessageBox.Show("Menu Button Item 1 Clicked");
            }
     
            void item1_Click(object sender, EventArgs e)
            {
                RadMessageBox.Show("Menu Item 1 Clicked");
            }
     
     
            public class Item
            {
                public Item()
                { }
     
                public Item(int id, string name)
                {
                    Id = id;
                    Name = name;
                }
     
                public int Id
                { get; set; }
     
                public string Name
                { get; set; }
     
            }
     
        }
    }

    Thanks
    Richard
  8. Truong
    Truong avatar
    9 posts
    Member since:
    Sep 2011

    Posted 24 Apr 2012 Link to this post

    Dear Richard,

    Thanks for your sample. I have tried several times several  times but the problem still exist. I tried to convert back to Q3 2011 Sp1 and it run perfectly.
  9. Richard Slade
    Richard Slade avatar
    3000 posts
    Member since:
    May 2009

    Posted 25 Apr 2012 Link to this post

    Hello, 

    Did the sample that I gave you work however? 
    I would suggest if you experience this issue again to open a support ticket and include a project that replicates the issue
    Thanks
    Richard
  10. Stefan
    Admin
    Stefan avatar
    2890 posts

    Posted 26 Apr 2012 Link to this post

    Hi Truong,

    This will be my suggestion too. Open a ticket and provide your project there, together with the exact steps that we need to take in order to reproduce the issue. Once we are able to do so, we will be able to investigate it and provide you with adequate support.

    We are looking forward to your support ticket.
     
    Greetings,
    Stefan
    the Telerik team
    RadControls for WinForms Q1'12 release is now live! Check out what's new or download a free trial >>
  11. Answer
    Jason
    Jason avatar
    24 posts
    Member since:
    Apr 2011

    Posted 27 Apr 2012 Link to this post

    I am having this same issue. I'm on 2012.1.12.215. The RadMenuButtonItem click event is firing twice when clicked. I removed the event handler from within the designer and it doesn't' fire at all, then readded it from the designer and it gets fired twice. The handler method itself is empty. I resolved the issue by replacing

    this.m_rmbValidate.Click += new System.EventHandler( this.btnValidate_Click );
    with
    this.m_rmbValidate.ButtonElement.Click += new System.EventHandler( this.btnValidate_Click );

    So I handle the click for the button element instead of the menu item.
  12. Truong
    Truong avatar
    9 posts
    Member since:
    Sep 2011

    Posted 29 Apr 2012 Link to this post

    Dear Jason,

    I have tried as your guide. It works perfectly. Thanks so much

  13. Stefan
    Admin
    Stefan avatar
    2890 posts

    Posted 02 May 2012 Link to this post

    Hello guys,

    I  managed to capture the case. We were not able to do that because we were using RadMessageBox in the event handler. However, if you break in there of print something in the event handler you can see that the issue appears.

    It came out that the issue is already reported by another user of ours. Feel free to add your vote for it here: http://www.telerik.com/support/pits.aspx#/details/Issue=9961.
     
    Greetings,
    Stefan
    the Telerik team
    RadControls for WinForms Q1'12 release is now live! Check out what's new or download a free trial >>
  14. Stefan
    Admin
    Stefan avatar
    2890 posts

    Posted 02 May 2012 Link to this post

    Hello guys,

    I managed to capture the case. We were not able to do that because we were using RadMessageBox in the event handler. However, if you break in the event handler and print something you can see that the issue appears.

    It came out that the issue is already reported by another user of ours. Feel free to add your vote for it here: http://www.telerik.com/support/pits.aspx#/details/Issue=9961.
     
    Greetings,
    Stefan
    the Telerik team
    RadControls for WinForms Q1'12 release is now live! Check out what's new or download a free trial >>
  15. Truong
    Truong avatar
    9 posts
    Member since:
    Sep 2011

    Posted 03 May 2012 Link to this post

    Dear Stefan,

    Thanks for your information. I have voted for priority of this issue.
Back to Top
UI for WinForms is Visual Studio 2017 Ready