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