예제 #1
0
        public void initTabPageThreatsNSD2()
        {
            // дизайн DataGridView для определения актуальных УБИ
            mf.dgvActualThreatsNSD.DefaultCellStyle.SelectionBackColor = Color.AliceBlue;
            mf.dgvThreats.DefaultCellStyle.SelectionForeColor          = Color.Black;
            mf.dgvActualThreatsNSD.Columns.Clear();
            mf.dgvActualThreatsNSD.Rows.Clear();

            mf.dgvActualThreatsNSD.Columns.Add("ThreatNumber", "№");
            mf.dgvActualThreatsNSD.Columns["ThreatNumber"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            mf.dgvActualThreatsNSD.Columns["ThreatNumber"].Width        = 40;

            mf.dgvActualThreatsNSD.Columns.Add("Name", "Название УБИ");

            mf.dgvActualThreatsNSD.Columns.Add("Feasibility", "Возможность реализации УБИ");
            mf.dgvActualThreatsNSD.Columns["Feasibility"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            mf.dgvActualThreatsNSD.Columns["Feasibility"].Width        = 115;

            mf.dgvActualThreatsNSD.Columns.Add("DamageDegree", "Степень ущерба от реализации УБИ");
            mf.dgvActualThreatsNSD.Columns["DamageDegree"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            mf.dgvActualThreatsNSD.Columns["DamageDegree"].Width        = 115;

            mf.dgvActualThreatsNSD.Columns.Add("IsActual", "Актуальность");
            mf.dgvActualThreatsNSD.Columns["IsActual"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            mf.dgvActualThreatsNSD.Columns["IsActual"].Width        = 95;

            int i = 0;

            foreach (Threat t in listFilteredThreats)
            {
                mf.dgvActualThreatsNSD.Rows.Add();
                mf.dgvActualThreatsNSD.Rows[i].Cells[mf.dgvActualThreatsNSD.Columns["ThreatNumber"].Index].Value = t.ThreatNumber;
                mf.dgvActualThreatsNSD.Rows[i].Cells[mf.dgvActualThreatsNSD.Columns["Name"].Index].Value         = t.Name;
                i++;
            }

            calcFeasibility();

            damageDegreeInput = new Dictionary <int, int[, , ]>();
            foreach (DataGridViewRow dgvRow in mf.dgvActualThreatsNSD.Rows)
            {
                damageDegreeInput.Add((int)dgvRow.Cells[mf.dgvActualThreatsNSD.Columns["ThreatNumber"].Index].Value,
                                      new int[IS.listOfInfoTypes.Count, 3, 7]);
            }

            DDControl          = new DamageDegreeControl(IS.listOfInfoTypes, listFilteredThreats, damageDegreeInput, mf);
            DDControl.Location = new System.Drawing.Point(mf.tpThreatsNSD2.Width - DDControl.Width, 0);
            DDControl.Anchor   = (AnchorStyles.Top | AnchorStyles.Right);
            mf.tpThreatsNSD2.Controls.Add(DDControl);

            mf.tcThreatsNSD.SelectedTab = mf.tpThreatsNSD2;
        }
예제 #2
0
        private void btnGotoDamage_Click(object sender, EventArgs e)
        {
            // выбрать все критерии фильтра УБИ
            for (int i = 0; i < mf.clbThreatFilter.Items.Count; i++)
            {
                mf.clbThreatFilter.SetItemChecked(i, true);
            }
            filterThreatList();
            if (mf.dgvThreats.Rows.Count == 0)
            {
                MessageBox.Show("Введите исходные данные для получения списка УБИ", "Список УБИ пуст", MessageBoxButtons.OK);
                checkInputData();
                return;
            }

            if (IS.listOfInfoTypes.Count == 0)
            {
                if (MessageBox.Show("Для определения степеней ущерба, требуется выбрать виды информации. Перейти к выбору?", "Недостаточно исходных данных", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    mf.treeView.SelectedNode = mf.returnTreeNode("tnOptions");
                }
                return;
            }

            if (!mf.tcThreatsNSD.TabPages.Contains(mf.tpThreatsNSD2))
            {
                mf.tcThreatsNSD.TabPages.Add(mf.tpThreatsNSD2);
                initTabPageThreatsNSD2();
            }
            else
            if (MessageBox.Show("Запустить инициализацию формы определения степеней ущерба заново?", "Требуется подтверждение!", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                mf.tpThreatsNSD2.Controls.Remove(DDControl);
                DDControl         = null;
                damageDegreeInput = null;
                initTabPageThreatsNSD2();
            }
        }