public void naNValuesInIntervall() { List <IBar> bars = new List <IBar>(); for (long i = 0; i <= 10; i++) { // (NaN, 1, NaN, 2, NaN, 3, NaN, 4, ...) decimal closePrice = i % 2 == 0 ? i : Decimals.NaN; IBar bar = new BaseBar(DateTime.Now.AddDays(i), Decimals.NaN, Decimals.NaN, Decimals.NaN, Decimals.NaN, Decimals.NaN); bars.Add(bar); } BaseTimeSeries series = new BaseTimeSeries("NaN test", bars); LowestValueIndicator lowestValue = new LowestValueIndicator(new ClosePriceIndicator(series), 2); for (int i = series.GetBeginIndex(); i <= series.GetEndIndex(); i++) { if (i % 2 != 0) { Assert.AreEqual(series.GetBar(i - 1).ClosePrice.ToString(), lowestValue.GetValue(i).ToString()); } else { Assert.AreEqual(series.GetBar(Math.Max(0, i - 1)).ClosePrice.ToString(), lowestValue.GetValue(i).ToString()); } } }
public void setUp() { Random r = new Random(); List <IBar> bars = new List <IBar>(); for (int i = 0; i < 1000; i++) { double open = r.NextDouble(); double close = r.NextDouble(); double max = Math.Max(close + r.NextDouble(), open + r.NextDouble()); double min = Math.Min(0, Math.Min(close - r.NextDouble(), open - r.NextDouble())); DateTime dateTime = DateTime.Now; IBar bar = new BaseBar(dateTime, (decimal)open, (decimal)close, (decimal)max, (decimal)min, i); bars.Add(bar); } this.series = new BaseTimeSeries("test", bars); this.openPriceIndicator = new OpenPriceIndicator(this.series); this.minPriceIndicator = new MinPriceIndicator(this.series); this.maxPriceIndicator = new MaxPriceIndicator(this.series); this.volumeIndicator = new VolumeIndicator(this.series); ClosePriceIndicator closePriceIndicator = new ClosePriceIndicator(this.series); this.emaIndicator = new EMAIndicator(closePriceIndicator, 20); }
public void naNValuesInIntervall() { List <IBar> bars = new List <IBar>(); for (long i = 0; i <= 10; i++) { // (0, NaN, 2, NaN, 4, NaN, 6, NaN, 8, ...) decimal maxPrice = i % 2 == 0 ? i : Decimals.NaN; IBar bar = new BaseBar(DateTime.Now.AddDays(i), Decimals.NaN, maxPrice, Decimals.NaN, Decimals.NaN, Decimals.NaN); bars.Add(bar); } BaseTimeSeries series = new BaseTimeSeries("NaN test", bars); AroonUpIndicator aroonUpIndicator = new AroonUpIndicator(series, 5); for (int i = series.GetBeginIndex(); i <= series.GetEndIndex(); i++) { if (i % 2 != 0) { Assert.AreEqual(Decimals.NaN, aroonUpIndicator.GetValue(i)); } else { Assert.AreEqual(Decimals.HUNDRED, aroonUpIndicator.GetValue(i)); } } }
/** * Gets a TimeSeries from the data section of a mutable Sheet. Data follows * a data section header and appears in the first six columns to the end of * the file. Empty cells in the data are forbidden. * * @param sheet mutable Sheet * @return TimeSeries of the data * @throws DataFormatException if getData throws DataFormatException or if * the data contains empty cells */ private static ITimeSeries GetSeries(ISheet sheet) { ITimeSeries series = new BaseTimeSeries(); IFormulaEvaluator evaluator = sheet.Workbook.GetCreationHelper().CreateFormulaEvaluator(); TimeSpan weekDuration = new TimeSpan(7, 0, 0, 0); List <IRow> rows = GetData(sheet); // parse the rows from the data section foreach (IRow row in rows) { CellValue[] cellValues = new CellValue[6]; for (int i = 0; i < 6; i++) { // empty cells in the data section are forbidden if (row.GetCell(i) == null) { throw new FormatException("empty cell in xls time series data"); } cellValues[i] = evaluator.Evaluate(row.GetCell(i)); } // build a bar from the row and add it to the series DateTime weekEndDate = DateUtil.GetJavaDate(cellValues[0].NumberValue); IBar bar = new BaseBar(weekDuration, weekEndDate, // open, high, low, close, volume cellValues[1].FormatAsString().ToDecimal(), cellValues[2].FormatAsString().ToDecimal(), cellValues[3].FormatAsString().ToDecimal(), cellValues[4].FormatAsString().ToDecimal(), cellValues[5].FormatAsString().ToDecimal()); series.AddBar(bar); } return(series); }
public void naNValuesInIntervall() { List <IBar> bars = new List <IBar>(); for (long i = 0; i <= 10; i++) { // (0, NaN, 2, NaN, 3, NaN, 4, NaN, 5, ...) decimal closePrice = i % 2 == 0 ? i : Decimals.NaN; IBar bar = new BaseBar(DateTime.Now.AddDays(i), Decimals.NaN, Decimals.NaN, Decimals.NaN, closePrice, Decimals.NaN); bars.Add(bar); } BaseTimeSeries series = new BaseTimeSeries("NaN test", bars); HighestValueIndicator highestValue = new HighestValueIndicator(new ClosePriceIndicator(series), 2); // index is the biggest of (index, index-1) for (int i = series.GetBeginIndex(); i <= series.GetEndIndex(); i++) { if (i % 2 != 0) // current is NaN take the previous as highest { Assert.AreEqual(series.GetBar(i - 1).ClosePrice.ToString(), highestValue.GetValue(i).ToString()); } else // current is not NaN but previous, take the current { Assert.AreEqual(series.GetBar(i).ClosePrice.ToString(), highestValue.GetValue(i).ToString()); } } }
public void naNValuesInIntervall() { List <IBar> bars = new List <IBar>(); for (long i = 10; i >= 0; i--) { // (10, NaN, 9, NaN, 8, NaN, 7, NaN) decimal minPrice = i % 2 == 0 ? i : Decimals.NaN; IBar bar = new BaseBar(DateTime.Now.AddDays(10 - i), Decimals.NaN, Decimals.NaN, minPrice, Decimals.NaN, Decimals.NaN); bars.Add(bar); } bars.Add(new BaseBar(DateTime.Now.AddDays(11), Decimals.NaN, Decimals.NaN, Decimals.TEN, Decimals.NaN, Decimals.NaN)); BaseTimeSeries series = new BaseTimeSeries("NaN test", bars); AroonDownIndicator aroonDownIndicator = new AroonDownIndicator(series, 5); for (int i = series.GetBeginIndex(); i <= series.GetEndIndex(); i++) { if (i % 2 != 0 && i < 11) { Assert.AreEqual(Decimals.NaN.ToString(), aroonDownIndicator.GetValue(i).ToString()); } else if (i < 11) { Assert.AreEqual(aroonDownIndicator.GetValue(i), Decimals.HUNDRED); } else { Assert.AreEqual(aroonDownIndicator.GetValue(i), 80); } } }
public override void Initialize(IComponent component) { base.Initialize(component); // this.m_BaseBar = base.Component as BaseBar; if (this.m_BaseBar == null) { this.DisplayError(new ArgumentException("BaseBar == null")); return; } }
public void onlyNaNValues() { List <IBar> bars = new List <IBar>(); for (long i = 0; i <= 10000; i++) { IBar bar = new BaseBar(DateTime.Now.AddDays(i), Decimals.NaN, Decimals.NaN, Decimals.NaN, Decimals.NaN, Decimals.NaN); bars.Add(bar); } BaseTimeSeries series = new BaseTimeSeries("NaN test", bars); LowestValueIndicator lowestValue = new LowestValueIndicator(new ClosePriceIndicator(series), 5); for (int i = series.GetBeginIndex(); i <= series.GetEndIndex(); i++) { Assert.AreEqual(Decimals.NaN.ToString(), lowestValue.GetValue(i).ToString()); } }
protected void ToggleToolByName(string toolName, bool enabled) { try { Sys_Button sys_Button = ButtonList.Find(b => b.Button_Sub != null && b.Button_Sub.Equals(toolName)); if (sys_Button != null) { BaseBar.BeginUpdate(); sys_Button.Button_Enabled = enabled; BarLargeButtonItem barButtonItem = (BarLargeButtonItem)sys_Button.Button_BarItem; barButtonItem.Enabled = enabled; BaseBar.EndUpdate(); } } catch (Exception ex) { SharedFunc.RaiseError(ex); } }
public void init() { string rawData = // fb_daily, 2017/01/03 - 2017/08/18 //date, close, volume, open, high, low "2017/08/18,167.4100,15065590.0000,166.8400,168.6700,166.2100\n" + "2017/08/17,166.9100,17009420.0000,169.3400,169.8600,166.8500\n" + "2017/08/16,170.0000,15732840.0000,171.2500,171.3800,169.2400\n" + "2017/08/15,171.0000,8713651.0000,171.4900,171.5000,170.0100\n" + "2017/08/14,170.7500,12940140.0000,170.0900,171.0800,169.2900\n" + "2017/08/11,168.0800,13778190.0000,167.9500,168.8200,166.8500\n" + "2017/08/10,167.4000,20551720.0000,170.0600,170.5900,166.8500\n" + "2017/08/09,171.1800,10800730.0000,169.9800,171.4500,169.5600\n" + "2017/08/08,171.2300,14317200.0000,171.8800,173.0500,170.6200\n" + "2017/08/07,171.9800,12765230.0000,169.9500,172.0600,169.6600\n" + "2017/08/04,169.6200,10505980.0000,168.9700,170.0600,168.6900\n" + "2017/08/03,168.5900,10519470.0000,169.3000,169.7000,168.2500\n" + "2017/08/02,169.3000,17181110.0000,170.3000,170.5500,166.9100\n" + "2017/08/01,169.8600,14286110.0000,169.8200,170.4700,169.0500\n" + "2017/07/31,169.2500,25429310.0000,172.0000,172.7200,168.5500\n" + "2017/07/28,172.4500,24546680.0000,169.0700,173.4300,169.0500\n" + "2017/07/27,170.4400,68454830.0000,174.7000,175.4900,167.5000\n" + "2017/07/26,165.6100,32989200.0000,166.0100,166.0100,164.1000\n" + "2017/07/25,165.2800,15309000.0000,165.0100,165.5400,163.8619\n" + "2017/07/24,166.0000,17208500.0000,164.6400,166.1700,164.3100\n" + "2017/07/21,164.4300,14712450.0000,164.1600,165.0500,163.7500\n" + "2017/07/20,164.5300,18409730.0000,164.8000,165.0000,162.8100\n" + "2017/07/19,164.1400,26144510.0000,163.5900,165.7000,163.1700\n" + "2017/07/18,162.8600,23686800.0000,159.6600,163.7300,159.4200\n" + "2017/07/17,159.7300,12757430.0000,160.2500,160.7800,158.8100\n" + "2017/07/14,159.9700,16305570.0000,160.1300,160.3200,159.3254\n" + "2017/07/13,159.2600,13912150.0000,158.7400,159.7800,158.4227\n" + "2017/07/12,158.9000,22710090.0000,156.4900,159.1600,156.2000\n" + "2017/07/11,155.2700,13652540.0000,153.3700,155.4225,152.9100\n" + "2017/07/10,153.5000,13326410.0000,151.6900,153.9800,151.5100\n" + "2017/07/07,151.4400,13249750.0000,149.2500,151.9900,149.1900\n" + "2017/07/06,148.8200,14934450.0000,149.0300,150.0400,148.0000\n" + "2017/07/05,150.3400,14321330.0000,149.0000,150.8500,148.1300\n" + "2017/07/03,148.4300,13862740.0000,151.7200,152.1500,147.8000\n" + "2017/06/30,150.9800,14909670.0000,151.9000,151.9200,150.0600\n" + "2017/06/29,151.0400,23948630.0000,152.2800,152.5000,148.9175\n" + "2017/06/28,153.2400,16696230.0000,150.9200,153.4700,149.8600\n" + "2017/06/27,150.5800,19351560.0000,152.8400,153.3100,150.3900\n" + "2017/06/26,153.5900,18030200.0000,156.2500,156.5000,153.1954\n" + "2017/06/23,155.0700,17897280.0000,152.7200,155.2000,152.6500\n" + "2017/06/22,153.4000,12835380.0000,153.0100,154.5500,152.9100\n" + "2017/06/21,153.9100,14943770.0000,152.3600,154.0800,151.8800\n" + "2017/06/20,152.2500,14733590.0000,152.8800,153.8400,152.2100\n" + "2017/06/19,152.8700,18944190.0000,151.7100,153.5700,151.7100\n" + "2017/06/16,150.6400,22843010.0000,149.5900,150.8300,148.6000\n" + "2017/06/15,149.8000,18956910.0000,147.6700,150.0366,146.3747\n" + "2017/06/14,150.2500,20774910.0000,151.2600,152.4000,149.0500\n" + "2017/06/13,150.6800,20474720.0000,150.1500,151.1800,148.9000\n" + "2017/06/12,148.4400,33150610.0000,148.1700,149.1950,144.5600\n" + "2017/06/09,149.6000,35541670.0000,154.7700,155.5900,146.6100\n" + "2017/06/08,154.7100,17795860.0000,154.0800,154.7300,153.1000\n" + "2017/06/07,153.1200,12040430.0000,153.2700,153.7500,152.3400\n" + "2017/06/06,152.8100,13443610.0000,153.4100,154.5200,152.4800\n" + "2017/06/05,153.6300,12504820.0000,153.6400,154.7088,153.4100\n" + "2017/06/02,153.6100,16838650.0000,151.8500,153.6300,151.3000\n" + "2017/06/01,151.5300,14511530.0000,151.7500,152.2900,150.3000\n" + "2017/05/31,151.4600,18001140.0000,152.7000,153.3500,151.0900\n" + "2017/05/30,152.3800,13213700.0000,151.9700,152.9000,151.6400\n" + "2017/05/26,152.1300,14984540.0000,152.2300,152.2500,151.1500\n" + "2017/05/25,151.9600,19827210.0000,150.3000,152.5900,149.9500\n" + "2017/05/24,150.0400,17914740.0000,148.5100,150.2300,148.4200\n" + "2017/05/23,148.0700,12807840.0000,148.5200,148.8100,147.2500\n" + "2017/05/22,148.2400,12578390.0000,148.0800,148.5900,147.6900\n" + "2017/05/19,148.0600,16165160.0000,148.4450,149.3900,147.9600\n" + "2017/05/18,147.6600,22778870.0000,144.7200,148.1500,144.5100\n" + "2017/05/17,144.8500,28232610.0000,148.0000,148.6700,144.4216\n" + "2017/05/16,149.7800,14506870.0000,150.1100,150.2100,149.0300\n" + "2017/05/15,150.1900,14952950.0000,150.1700,151.4800,149.7700\n" + "2017/05/12,150.3300,9584769.0000,150.4000,150.4600,149.6300\n" + "2017/05/11,150.0400,11832750.0000,150.3100,150.6500,149.4100\n" + "2017/05/10,150.2900,11994140.0000,150.2300,150.5200,148.8600\n" + "2017/05/09,150.4800,17381800.0000,151.4900,152.5900,150.2100\n" + "2017/05/08,151.0600,15813350.0000,150.7100,151.0800,149.7400\n" + "2017/05/05,150.2400,17104730.0000,151.4500,151.6300,149.7900\n" + "2017/05/04,150.8500,36185180.0000,150.1700,151.5200,148.7200\n" + "2017/05/03,151.8000,28301550.0000,153.6000,153.6000,151.3400\n" + "2017/05/02,152.7800,21617190.0000,153.3400,153.4400,151.6600\n" + "2017/05/01,152.4600,25170200.0000,151.7400,152.5700,151.4200\n" + "2017/04/28,150.2500,30607510.0000,149.5000,151.5300,149.0700\n" + "2017/04/27,147.7000,11072600.0000,146.6700,147.7500,146.1400\n" + "2017/04/26,146.5600,12388100.0000,147.0900,147.5900,146.0900\n" + "2017/04/25,146.4900,17718030.0000,145.7900,147.1500,145.7898\n" + "2017/04/24,145.4700,14397480.0000,144.9600,145.6738,144.3400\n" + "2017/04/21,143.6800,12172640.0000,143.9000,144.1700,142.2700\n" + "2017/04/20,143.8000,15948700.0000,142.9500,144.2500,142.6890\n" + "2017/04/19,142.2700,15544500.0000,141.3500,143.0400,141.2700\n" + "2017/04/18,140.9600,14795020.0000,141.2700,141.9050,140.6100\n" + "2017/04/17,141.4200,11488510.0000,139.7600,141.5500,139.7500\n" + "2017/04/13,139.3900,10939950.0000,139.6200,140.5800,139.3300\n" + "2017/04/12,139.5800,11600930.0000,139.7200,140.4000,139.4400\n" + "2017/04/11,139.9200,16627940.0000,140.8000,141.0299,138.8100\n" + "2017/04/10,141.0400,9033921.0000,141.0000,141.4300,140.6300\n" + "2017/04/07,140.7800,11811450.0000,141.2000,141.5500,140.2400\n" + "2017/04/06,141.1700,15089610.0000,142.1100,142.2200,140.9100\n" + "2017/04/05,141.8500,17132150.0000,142.2600,143.4400,141.2900\n" + "2017/04/04,141.7300,11934110.0000,141.8600,142.0900,141.2700\n" + "2017/04/03,142.2800,13552550.0000,141.9300,142.4700,140.8200\n" + "2017/03/31,142.0500,11366390.0000,142.3100,142.6300,141.8900\n" + "2017/03/30,142.4100,12393610.0000,142.4000,142.9500,141.8500\n" + "2017/03/29,142.6500,16504590.0000,141.9900,142.8600,141.4300\n" + "2017/03/28,141.7600,14660670.0000,140.3600,141.9500,140.0100\n" + "2017/03/27,140.3200,12791820.0000,139.0500,140.6500,138.7700\n" + "2017/03/24,140.3400,16636900.0000,140.0800,141.0244,139.7600\n" + "2017/03/23,139.5300,12992700.0000,139.4800,140.3900,139.0900\n" + "2017/03/22,139.5900,17020610.0000,137.9300,139.7900,137.6000\n" + "2017/03/21,138.5100,29855980.0000,141.1500,142.3082,138.4000\n" + "2017/03/20,139.9400,12002150.0000,139.7100,140.1900,139.2500\n" + "2017/03/17,139.8400,20487730.0000,140.3400,140.3400,139.7000\n" + "2017/03/16,139.9900,13604260.0000,140.2000,140.2500,139.7300\n" + "2017/03/15,139.7200,19315340.0000,139.2900,140.1000,138.4900\n" + "2017/03/14,139.3200,12935370.0000,139.4600,139.4600,138.5200\n" + "2017/03/13,139.6000,10949000.0000,138.7100,139.6800,138.6729\n" + "2017/03/10,138.7900,16299220.0000,138.9100,139.4900,138.2200\n" + "2017/03/09,138.2400,15523900.0000,137.7200,138.5700,137.4000\n" + "2017/03/08,137.7200,10174840.0000,137.1500,137.9900,137.0516\n" + "2017/03/07,137.3000,13517880.0000,137.0300,138.3700,136.9900\n" + "2017/03/06,137.4200,12562040.0000,136.8800,137.8300,136.5100\n" + "2017/03/03,137.1700,11154380.0000,136.6300,137.3300,136.0800\n" + "2017/03/02,136.7600,12278560.0000,137.0900,137.8200,136.3100\n" + "2017/03/01,137.4200,16241330.0000,136.4700,137.4800,136.3000\n" + "2017/02/28,135.5400,16096310.0000,136.7900,136.8050,134.7500\n" + "2017/02/27,136.4100,14300970.0000,135.2600,137.1846,135.0200\n" + "2017/02/24,135.4400,12617180.0000,134.1600,135.6200,134.1600\n" + "2017/02/23,135.3600,18408460.0000,135.8900,136.1200,134.3300\n" + "2017/02/22,136.1200,27331930.0000,133.6000,136.7900,133.4600\n" + "2017/02/21,133.7200,14735860.0000,133.5000,133.9100,132.9000\n" + "2017/02/17,133.5300,12265480.0000,133.5000,134.0912,133.1700\n" + "2017/02/16,133.8400,12816260.0000,133.0700,133.8700,133.0220\n" + "2017/02/15,133.4400,13215470.0000,133.4500,133.7000,132.6600\n" + "2017/02/14,133.8500,14346090.0000,134.1000,134.2300,132.5500\n" + "2017/02/13,134.0500,13511640.0000,134.6975,134.6975,133.7000\n" + "2017/02/10,134.1900,15050270.0000,134.1000,134.9400,133.6800\n" + "2017/02/09,134.1400,16454060.0000,134.4900,134.5000,133.3100\n" + "2017/02/08,134.2000,22370760.0000,132.6000,134.4400,132.4400\n" + "2017/02/07,131.8400,14585030.0000,132.2400,133.0000,131.6610\n" + "2017/02/06,132.0600,17015610.0000,130.9800,132.0600,130.3000\n" + "2017/02/03,130.9800,24776070.0000,131.2400,132.8500,130.7600\n" + "2017/02/02,130.8400,54281800.0000,133.2200,135.4900,130.4000\n" + "2017/02/01,133.2300,47329480.0000,132.2500,133.4900,130.6800\n" + "2017/01/31,130.3200,19642550.0000,130.1700,130.6600,129.5157\n" + "2017/01/30,130.9800,18919750.0000,131.5800,131.5800,129.6000\n" + "2017/01/27,132.1800,19505970.0000,132.6800,132.9500,131.0800\n" + "2017/01/26,132.7800,19964800.0000,131.6300,133.1400,131.4401\n" + "2017/01/25,131.4800,18745640.0000,130.0000,131.7400,129.7700\n" + "2017/01/24,129.3700,15140910.0000,129.3800,129.9000,128.3800\n" + "2017/01/23,128.9300,16566300.0000,127.3100,129.2500,126.9500\n" + "2017/01/20,127.0400,19068380.0000,128.1000,128.4800,126.7800\n" + "2017/01/19,127.5500,12171270.0000,128.2300,128.3500,127.4500\n" + "2017/01/18,127.9200,13107440.0000,128.4100,128.4300,126.8400\n" + "2017/01/17,127.8700,15279990.0000,128.0400,128.3400,127.4000\n" + "2017/01/13,128.3400,24857410.0000,127.4900,129.2700,127.3700\n" + "2017/01/12,126.6200,18596580.0000,125.6100,126.7300,124.8000\n" + "2017/01/11,126.0900,18334560.0000,124.3500,126.1200,124.0600\n" + "2017/01/10,124.3500,17299590.0000,124.8200,125.5000,124.2800\n" + "2017/01/09,124.9000,22874170.0000,123.5500,125.4300,123.0400\n" + "2017/01/06,123.4100,28525570.0000,120.9800,123.8800,120.0300\n" + "2017/01/05,120.6700,19459380.0000,118.8600,120.9500,118.3209\n" + "2017/01/04,118.6900,19594560.0000,117.5500,119.6600,117.2900\n" + "2017/01/03,116.8600,20635600.0000,116.0300,117.8400,115.5100\n"; string[] dataLine = rawData.Split("\n"); List <IBar> bars = new List <IBar>(); for (int i = dataLine.Length - 2; i >= 0; i--) { string[] barData = dataLine[i].Split(","); IBar bar = new BaseBar(DateTime.Now.AddDays(i), decimal.Parse(barData[3]), decimal.Parse(barData[4]), decimal.Parse(barData[5]), decimal.Parse(barData[1]), decimal.Parse(barData[2])); bars.Add(bar); } data = new BaseTimeSeries("FB_daily", bars); }
protected void RefreshTool() { BaseBar.BeginUpdate(); BaseTool.BeginUpdate(); BaseTool.ItemLinks.Clear(); BaseStatus.BeginUpdate(); BaseStatus.ItemLinks.Clear(); BaseBar.Items.Clear(); foreach (Sys_Button sys_Button in ButtonList.OrderBy(b => b.Button_Parent).ThenBy(b => b.Button_Sort)) { BarLargeButtonItem barButtonItem = null; if (barButtonItem == null) { barButtonItem = new BarLargeButtonItem(); barButtonItem.Name = sys_Button.Button_Id; sys_Button.Button_BarItem = barButtonItem; RefreshTool(sys_Button); //按钮存在父级 if (!string.IsNullOrEmpty(sys_Button.Button_Parent)) { BarLargeButtonItem parentBarItem = (BarLargeButtonItem)BaseBar.Items[sys_Button.Button_Parent]; if (parentBarItem != null) { PopupMenu popupMenu = (PopupMenu)parentBarItem.DropDownControl; if (popupMenu == null) { popupMenu = new PopupMenu(); parentBarItem.DropDownControl = popupMenu; popupMenu.Manager = BaseBar; //没有这一行会导致按钮Enabled=false时候出错 parentBarItem.ActAsDropDown = true; parentBarItem.ButtonStyle = BarButtonStyle.DropDown; } BarItemLink itemLink = popupMenu.AddItem(barButtonItem); itemLink.BeginGroup = sys_Button.Button_BeginGroup; } } else { if (sys_Button.Button_Assign.Equals(0)) { BarItemLink itemLink = BaseTool.AddItem(barButtonItem); itemLink.BeginGroup = sys_Button.Button_BeginGroup; } else { BarItemLink itemLink = BaseStatus.AddItem(barButtonItem); itemLink.BeginGroup = sys_Button.Button_BeginGroup; } } barButtonItem.ItemClick += new ItemClickEventHandler(this.InitializeToolClick); } } if (BaseTool.ItemLinks.Count.Equals(0)) { BaseTool.Visible = false; } else { BaseTool.Visible = true; } if (BaseStatus.ItemLinks.Count.Equals(0)) { BaseStatus.Visible = false; } else { BaseStatus.Visible = true; } BaseTool.EndUpdate(); BaseStatus.EndUpdate(); BaseBar.EndUpdate(); }