I have the following code in my indicator to add a context menu item to the right click chart. It works perfectly, I it seems to somtimes fail to be removed, in that (not every time), if the chart is refresh with f5, or a change to indicator made, the pjsHABars menu item is still there and becomes duplicated.
What am I going wrong?
Thanks,
} else if (State == State.Configure) { //HMA, SSF2, SSF3, WMA, LREG, DHMA, KAMA, ZLEMA, T3, VMA myContextItem = new MenuItem() { Header = "pjsHABars" }; myContextItem.Items.Add( myContextItemtype = new MenuItem() { Header = "Smoothing type" }); myContextItem.Items.Add( myContextItemperiod = new MenuItem() { Header = "Smoothing Period" }); myContextItemtype.Items.Add( myContextItemtypeHMA = new MenuItem() { Header = "HMA" }); myContextItemtype.Items.Add( myContextItemtypeVMA = new MenuItem() { Header = "VMA" }); myContextItemtype.Items.Add( myContextItemtypeSSF = new MenuItem() { Header = "SSF" }); myContextItemtypeHMA.Click += myContextItemEMA_Click; myContextItemtypeSSF.Click += myContextItemSSF_Click; myContextItemtypeVMA.Click += myContextItemVMA_Click; myContextItemperiod.Items.Add( myContextItemperiod1 = new MenuItem() { Header = "1" }); myContextItemperiod.Items.Add( myContextItemperiod2 = new MenuItem() { Header = "2" }); myContextItemperiod.Items.Add( myContextItemperiod3 = new MenuItem() { Header = "3" }); myContextItemperiod.Items.Add( myContextItemperiod4 = new MenuItem() { Header = "4" }); myContextItemperiod.Items.Add( myContextItemperiod5 = new MenuItem() { Header = "5" }); myContextItemperiod1.Click += myContextItemperiod1_Click; myContextItemperiod2.Click += myContextItemperiod2_Click; myContextItemperiod3.Click += myContextItemperiod3_Click; myContextItemperiod4.Click += myContextItemperiod4_Click; myContextItemperiod5.Click += myContextItemperiod5_Click; } else if (State == State.Terminated) { if (myContextItem != null) { if (ChartControl != null) { myContextItemperiod1.Click -= myContextItemperiod1_Click; myContextItemperiod2.Click -= myContextItemperiod2_Click; myContextItemperiod3.Click -= myContextItemperiod3_Click; myContextItemperiod4.Click -= myContextItemperiod4_Click; myContextItemperiod5.Click -= myContextItemperiod5_Click; myContextItemtypeHMA.Click -= myContextItemEMA_Click; myContextItemtypeSSF.Click -= myContextItemSSF_Click; myContextItemtypeVMA.Click -= myContextItemVMA_Click; // ChartControl.ContextMenu.Items.Remove(myContextItemperiod1); // ChartControl.ContextMenu.Items.Remove(myContextItemperiod2); // ChartControl.ContextMenu.Items.Remove(myContextItemperiod3); // ChartControl.ContextMenu.Items.Remove(myContextItemperiod4); // ChartControl.ContextMenu.Items.Remove(myContextItemperiod5); // ChartControl.ContextMenu.Items.Remove(myContextItemtypeVMA); // ChartControl.ContextMenu.Items.Remove(myContextItemtypeHMA); // ChartControl.ContextMenu.Items.Remove(myContextItemtypeSSF); // ChartControl.ContextMenu.Items.Remove(myContextItemtype); // ChartControl.ContextMenu.Items.Remove(myContextItemperiod); ChartControl.ContextMenu.Items.Remove(myContextItem);
Comment