コード例 #1
0
        public TenorStrikeRates GetDataGridSource()
        {
            TenorStrikeRates quotes = new TenorStrikeRates();

            foreach (DataGridViewColumn column in dgv.Columns)
            {
                string columnHeaderValue = column.HeaderText;
                if (columnHeaderValue != null)
                {
                    double strike = ReadStrike(columnHeaderValue);
                    foreach (DataGridViewRow row in dgv.Rows)
                    {
                        object rowHeaderValue = row.HeaderCell.Value;
                        if (rowHeaderValue != null)
                        {
                            string tenor     = rowHeaderValue.ToString();
                            object rateValue = row.Cells[column.Name].Value;
                            double rate      = rateValue == null ? double.NaN : Convert.ToDouble(rateValue);
                            quotes.Add(new TenorStrikeRate(tenor, strike, rate));
                        }
                    }
                }
            }

            return(quotes);
        }
コード例 #2
0
 private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e)
 {
     if (ReturnDataGridSource != null)
     {
         TenorStrikeRates newSource = GetDataGridSource();
         ReturnDataGridSource(newSource);
     }
 }
コード例 #3
0
        private static void OnGridSourcePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            TenorStrikeRates newGridSource     = (TenorStrikeRates)e.NewValue;
            TenorStrikeRates currentGridSource = dgvUc.GetDataGridSource();

            if (!currentGridSource.Equals(newGridSource))
            {
                dgvUc.Set(newGridSource);
            }
        }
コード例 #4
0
 public void Set(TenorStrikeRates source)
 {
     dgv.Columns.Clear();
     dgv.Rows.Clear();
     if (source != null)
     {
         PopulateColumnHeader(source.UniqueSortedStrikes);
         PopulateRowHeader(source.UniqueSortedTenors);
         PopulateCells(source);
     }
 }
コード例 #5
0
        private string BuildOutputValue(TenorStrikeRates tenorStrikeRates)
        {
            string text = string.Empty;

            foreach (TenorStrikeRate item in tenorStrikeRates)
            {
                text = text + string.Format("Tenor: {0}, Strike: {1}, Rate: {2}\n", item.Tenor, item.Strike.ToString("P2"), item.Rate);
            }

            return(text);
        }
コード例 #6
0
        private TenorStrikeRates BuildInitialInput()
        {
            var quotes = new TenorStrikeRates();

            quotes.Add(new TenorStrikeRate("1y", -0.01, 0.01));
            quotes.Add(new TenorStrikeRate("1y", 0, 0.02));
            quotes.Add(new TenorStrikeRate("1y", 0.01, 0.03));
            quotes.Add(new TenorStrikeRate("2y", -0.01, 0.04));
            quotes.Add(new TenorStrikeRate("2y", 0, 0.05));
            quotes.Add(new TenorStrikeRate("2y", 0.01, 0.06));
            return(quotes);
        }
コード例 #7
0
        private void PopulateCells(TenorStrikeRates quotes)
        {
            List <string> tenors  = quotes.UniqueSortedTenors;
            List <double> strikes = quotes.UniqueSortedStrikes;

            for (int rowIdx = 0; rowIdx < tenors.Count; rowIdx++)
            {
                string optionTenor = tenors[rowIdx];
                for (int colIdx = 0; colIdx < strikes.Count; colIdx++)
                {
                    double          strike = strikes[colIdx];
                    TenorStrikeRate quote  = quotes.Find(optionTenor, strike);
                    if (quote != null)
                    {
                        double           rate = quote.Rate;
                        DataGridViewCell cell = dgv.Rows[rowIdx].Cells[colIdx];
                        cell.Value = rate;
                    }
                }
            }
        }
コード例 #8
0
 private void OnReturnDataGridSource(TenorStrikeRates currentGridSource)
 {
     GridSource = currentGridSource;
 }