Example #1
0
        private void singleValueRdo_CheckedChanged(object sender, EventArgs e)
        {
            bool chk = (sender as RadioButton).Checked;

            if (!chk)
            {
                singleValueTxt.Enabled = false;
                return;
            }

            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
            if (o != null)
            {
                o.type = RiverSimulationProfile.TwoInOne.Type.UseValue;
            }

            if (inputFormType == InputFormType.FlowConditionsSettingVariable)
            {
                dataGridView.Enabled = true;
                dataGridView.Rows.Clear();

                DataGridViewUtility.InitializeDataGridView(dataGridView, 2, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, colName, rowName, true, noRowNum);
                dataGridView.Columns[0].Name = "邊界時間";
                dataGridView.Columns[1].Name = colName;

                FillDataGridView();
            }
            else
            {
                singleValueTxt.Enabled = true;
                dataGridView.Enabled   = false;
            }
        }
Example #2
0
        private bool ConvertWaterLevelData()
        {
            try
            {
                DataGridView v = dataGridView;
                RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    for (int jw = jStart; jw < jStart + rowCount; ++jw)
                    {
                        o.Value2D()[0, jw - jStart] = Convert.ToDouble(v[iStart, jw].Value);
                    }
                    break;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    for (int jw = jStart; jw < jStart + rowCount; ++jw)
                    {
                        for (int iw = iStart; iw < iStart + colCount; ++iw)
                        {
                            o.Array2D()[iw - iStart, jw - jStart] = Convert.ToDouble(v[iw, jw].Value);
                        }
                    }
                    break;
                }
            }
            catch
            {
                return(false);
            }
            return(true);
        }
Example #3
0
 private void type2Rdo_CheckedChanged(object sender, EventArgs e)
 {
     RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
     if ((sender as RadioButton).Checked && o.check == false)
     {
         o.check = true;
     }
 }
Example #4
0
        private void InitTableDepthAverageConcentration()
        {
            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
            if (o == null)
            {
                return;
            }
            type1Rdo.Visible = false;
            type2Rdo.Visible = false;
            switch (o.type)
            {
            case RiverSimulationProfile.TwoInOne.Type.None:
            case RiverSimulationProfile.TwoInOne.Type.UseValue:
                //buttonText = "進階 - 逐點輸入";
                for (int iw = iStart; iw < iStart + p.sedimentParticlesNumber; ++iw)
                {       //填入橫排標題,泥砂數目(K)
                    dataGridView[iw, jStart - 1].Value           = iTitle + (iw - iStart + 1).ToString();
                    dataGridView[iw, jStart - 1].Style.BackColor = colHeaderColor1;
                }
                type1Btn.Enabled = false;
                type2Btn.Enabled = true;
                break;

            case RiverSimulationProfile.TwoInOne.Type.UseArray:
                //顯示I左方垂直索引
                dataGridView[0, 1].Value           = "";
                dataGridView[0, 1].Style.BackColor = rowHeaderColor;
                for (int jw = jStart; jw < jStart + p.inputGrid.GetI; ++jw)
                {
                    dataGridView[0, jw].Value           = (jw - jStart).ToString();
                    dataGridView[0, jw].Style.BackColor = rowHeaderColor;
                }
                //buttonText = "均一值";
                for (int iw = iStart; iw < iStart + p.inputGrid.GetJ; ++iw)
                {       //填入橫排標題,I個
                    dataGridView[iw, 1].Value           = (iw - iStart + 1).ToString();
                    dataGridView[iw, 1].Style.BackColor = colHeaderColor1;
                }
                for (int iw = iStart; iw < iStart + p.sedimentParticlesNumber; ++iw)
                {       //填入標籤標題,K個
                    dataGridView[iw, 0].Value           = iTitle + (iw - iStart + 1).ToString();
                    dataGridView[iw, 0].Style.BackColor = (tabIndex == (iw - iStart)) ? tabActiveColor : tabItemColor;
                }
                //b = new DataGridViewButtonCell();
                //b.Value = "套用到全部";
                //b.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                //dataGridView[1, jStart + rowCount + 1] = b;
                type1Btn.Enabled = true;
                type2Btn.Enabled = false;
                break;
            }
            //b = new DataGridViewButtonCell();
            //b.Value = buttonText;
            //b.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //dataGridView[0, jStart + rowCount + 1] = b;
        }
Example #5
0
        private void InitTableWaterLevel()
        {
            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
            if (o == null)
            {
                return;
            }

            if (p.IsVariableFlowType())
            {   //變量流需顯示邊界時間欄位
                dataGridView[0, jStart - 1].Value           = timeTitle;
                dataGridView[0, jStart - 1].Style.BackColor = rowHeaderColor;
                for (int jw = jStart; jw < jStart + p.boundaryTimeNumber; ++jw)
                {
                    dataGridView[0, jw].Value           = p.boundaryTime[jw - jStart].ToString();
                    dataGridView[0, jw].Style.BackColor = rowHeaderColor;
                }
            }
            switch (o.type)
            {
            case RiverSimulationProfile.TwoInOne.Type.None:
            case RiverSimulationProfile.TwoInOne.Type.UseValue:
                for (int iw = iStart; iw < iStart + 1; ++iw)
                {       //填入橫排標題, 只有一欄
                    dataGridView[iw, jStart - 1].Value           = iTitle;
                    dataGridView[iw, jStart - 1].Style.BackColor = colHeaderColor1;
                }
                type1Btn.Enabled = false;
                type2Btn.Enabled = true;
                break;

            case RiverSimulationProfile.TwoInOne.Type.UseArray:
                for (int iw = iStart; iw < iStart + colCount; ++iw)
                {       //填入橫排標題
                    dataGridView[iw, jStart - 1].Value           = iTitle + (iw - iStart + 1).ToString();
                    dataGridView[iw, jStart - 1].Style.BackColor = colHeaderColor1;
                }
                type1Btn.Enabled = true;
                type2Btn.Enabled = false;
                break;
            }

            if (o.check)
            {
                type2Rdo.Checked = true;
            }
            else
            {
                type1Rdo.Checked = true;
            }
        }
Example #6
0
 private void BottomBedLoadFluxApplyAll()
 {
     RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
     for (int kw = 1; kw < p.sedimentParticlesNumber; ++kw)
     {
         for (int tw = jStart; tw < jStart + (p.IsConstantFlowType() ? 1 : p.boundaryTimeNumber); ++tw)
         {
             for (int jw = iStart; jw < iStart + p.inputGrid.GetJ; ++jw)
             {
                 o.Array3D()[kw, jw - iStart, tw - jStart] = o.Array3D()[0, jw - iStart, tw - jStart];
             }
         }
     }
 }
        private void tableValueRdo_CheckedChanged(object sender, EventArgs e)
        {
            bool chk = (sender as RadioButton).Checked;

            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
            if (chk)
            {
                if (o.type != RiverSimulationProfile.TwoInOne.Type.UseArray)
                {
                    o.type = RiverSimulationProfile.TwoInOne.Type.UseArray;
                    CreateData(o);
                    InitializeDataGridView();
                }
            }
        }
 private bool ConvertType5()
 {
     try
     {
         RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
         o.Value2D()[0, 0] = Convert.ToDouble(dataGridView1[0, 0].Value);
         o.Value2D()[1, 0] = Convert.ToDouble(dataGridView1[1, 0].Value);
         o.Value2D()[2, 0] = Convert.ToDouble(dataGridView1[2, 0].Value);
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #9
0
        private void CreateData(object d)
        {
            RiverSimulationProfile.TwoInOne o  = d as RiverSimulationProfile.TwoInOne;
            RiverSimulationProfile.TwoInOne _d = null;
            Debug.Assert(o != null);

            if (formType == FormType.FlowQuantity || formType == FormType.WaterLevel)
            {
                _data = new RiverSimulationProfile.TwoInOne(d as RiverSimulationProfile.TwoInOne);
                _d    = _data as RiverSimulationProfile.TwoInOne;
                Debug.Assert(_d != null);
                if (o.ValueNull() || o.ArrayNull() ||
                    (o.valueType == RiverSimulationProfile.TwoInOne.ValueType.TwoDim && (o.Value2D().GetLength(0) != colCount || o.Value2D().GetLength(1) != rowCount)) ||
                    (o.valueType == RiverSimulationProfile.TwoInOne.ValueType.ThreeDim && (o.Value3D().GetLength(0) != colCount || o.Value3D().GetLength(1) != rowCount)))
                {   //rowCount : Q1 ~ Q5, colCount : J1 ~ J15
                    //_data = new RiverSimulationProfile.TwoInOne(colCount, rowCount);
                    _d.Create2D(colCount, rowCount);
                    _d.type = RiverSimulationProfile.TwoInOne.Type.UseValue;
                }
            }
            else if (formType == FormType.BottomBedLoadFlux)
            {
                _data = new RiverSimulationProfile.TwoInOne(d as RiverSimulationProfile.TwoInOne);
                _d    = _data as RiverSimulationProfile.TwoInOne;
                Debug.Assert(_d != null);
                if (o.ValueNull() || o.ArrayNull())
                {   //rowCount : Q1 ~ Q5, colCount : J1 ~ J15
                    // _data = new RiverSimulationProfile.TwoInOne(p.boundaryTimeNumber, p.sedimentParticlesNumber, p.inputGrid.GetJ); //[T, K, J]
                    //_data = new RiverSimulationProfile.TwoInOne(p.sedimentParticlesNumber, p.inputGrid.GetJ, p.boundaryTimeNumber); //[K, J, T]
                    //_d.Create3D(p.sedimentParticlesNumber, p.inputGrid.GetJ, p.boundaryTimeNumber);
                    _d.Create3D(p.sedimentParticlesNumber, p.inputGrid.GetJ, rowCount);
                    _d.type = RiverSimulationProfile.TwoInOne.Type.UseValue;
                }
            }
            else if (formType == FormType.DepthAverageConcentration)
            {
                _data = new RiverSimulationProfile.TwoInOne(d as RiverSimulationProfile.TwoInOne);
                _d    = _data as RiverSimulationProfile.TwoInOne;
                Debug.Assert(_d != null);
                if (o.ValueNull() || o.ArrayNull())
                {   //rowCount : Q1 ~ Q5, colCount : J1 ~ J15
                    _d.Create3D(p.sedimentParticlesNumber, p.inputGrid.GetJ, p.inputGrid.GetI);
                }
            }
        }
Example #10
0
        private bool AutoFinishConvertFlowQualityCell()
        {
            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
            double sum     = 0.0;
            bool   allPass = true;

            for (int jw = jStart; jw < jStart + rowCount; ++jw)
            {
                if (!CalFlowQualitySumOfOneRow(jw, ref sum))
                {
                    allPass = false;
                    continue;
                }
                dataGridView[iStart + colCount, jw].Value = (100.0 - sum).ToString();
            }

            return(allPass);
        }
 private bool ConvertType7()
 {
     try
     {
         RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
         for (int i = 0; i < colCount; ++i)
         {
             o.Array3D()[i, 0, 0] = Convert.ToDouble(dataGridView1[i, 0].Value);
             o.Array3D()[i, 0, 1] = Convert.ToDouble(dataGridView2[i, 0].Value);
             o.Array3D()[i, 0, 2] = Convert.ToDouble(dataGridView3[i, 0].Value);
         }
     }
     catch
     {
         return(false);
     }
     return(true);
 }
 private bool ConvertType2()
 {
     try
     {
         RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
         for (int i = 0; i < colCount; ++i)
         {
             for (int j = 0; j < rowCount; ++j)
             {
                 o.Value3D()[i, j, 0] = Convert.ToDouble(dataGridView1[i, j].Value);
                 o.Value3D()[i, j, 1] = Convert.ToDouble(dataGridView2[i, j].Value);
             }
         }
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #13
0
 private bool ConvertFlowConditionsSettingVariable()
 {
     try
     {
         DataGridView v = dataGridView;
         RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
         for (int i = 1; i < v.ColumnCount; ++i)
         {
             for (int j = 0; j < v.RowCount; ++j)
             {
                 o.Array2D()[i - 1, j] = Convert.ToDouble(v[i, j].Value);
             }
         }
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #14
0
 private bool ConvertFlowConditionsSettingConstant()
 {
     try
     {
         DataGridView v = dataGridView;
         RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
         for (int i = 0; i < v.ColumnCount; ++i)
         {
             o.Array2D()[i, 0] = Convert.ToDouble(v[i, 0].Value);
         }
         if (singleValueTxt.Enabled)
         {
             o.ValueDouble()[0] = Convert.ToDouble(singleValueTxt.Text);
         }
     }
     catch
     {
         return(false);
     }
     return(true);
 }
        private bool AlertBoundaryTimeChange(ref RiverSimulationProfile.TwoInOne o)
        {
            if (o == null)
            {
                return(false);
            }
            if (p.IsConstantFlowType())
            {   //定量流時不檢查
                return(true);
            }
            if (p.boundaryTime == null || p.boundaryTime.GetLength(0) != p.boundaryTimeNumber)
            {
                MessageBox.Show("邊界時間尚未輸入完成", "確認", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return(false);
            }

            if (!o.ArrayNull() && o.Array2D().GetLength(1) != p.boundaryTimeNumber)
            {   //邊界時間有輸入,但與邊界時間數目不符合
                if (DialogResult.OK == MessageBox.Show("改變過邊界時間數目需要重新輸入所有流況資料,請確認?", "確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation))
                {
                    RiverSimulationProfile.TwoInOne.Type      tp = o.type;
                    RiverSimulationProfile.TwoInOne.ValueType vt = o.valueType;
                    RiverSimulationProfile.TwoInOne.ArrayType at = o.arrayType;
                    o = new RiverSimulationProfile.TwoInOne(vt, at, tp);
                    return(true);
                }
                else
                {
                    p.boundaryTimeNumber       = o.Array2D().GetLength(1);
                    boundaryTimeNumberTxt.Text = p.boundaryTimeNumber.ToString();
                    return(false);
                }
            }

            return(true);
        }
Example #16
0
 private bool ConvertTwoInOneDouble()
 {
     try
     {
         DataGridView v = dataGridView;
         RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
         for (int i = 0; i < colCount; ++i)
         {
             for (int j = 0; j < rowCount; ++j)
             {
                 o.Array2D()[i, j] = Convert.ToDouble(v[i, j].Value);
             }
         }
         if (singleValueTxt.Enabled)
         {
             o.ValueDouble()[0] = Convert.ToDouble(singleValueTxt.Text);
         }
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #17
0
        private bool ConvertDepthAverageConcentrationData()
        {
            try
            {
                DataGridView v = dataGridView;
                RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    for (int tw = jStart; tw < jStart + 1; ++tw)
                    {
                        for (int kw = iStart; kw < iStart + p.sedimentParticlesNumber; ++kw)
                        {
                            o.Value3D()[kw - iStart, 0, 0] = Convert.ToDouble(v[kw, tw].Value);
                        }
                    }
                    break;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    for (int jw = jStart; jw < jStart + p.inputGrid.GetI; ++jw)
                    {
                        for (int iw = iStart; iw < iStart + p.inputGrid.GetJ; ++iw)
                        {
                            o.Array3D()[tabIndex, iw - iStart, jw - jStart] = Convert.ToDouble(v[iw, jw].Value);
                        }
                    }
                    break;
                }
            }
            catch
            {
                return(false);
            }
            return(true);
        }
Example #18
0
        private bool ConvertBottomBedLoadFluxData()
        {
            try
            {
                DataGridView v = dataGridView;
                RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    for (int tw = jStart; tw < jStart + (p.IsConstantFlowType() ? 1 : p.boundaryTimeNumber); ++tw)
                    {
                        for (int kw = iStart; kw < iStart + p.sedimentParticlesNumber; ++kw)
                        {
                            o.Value3D()[kw - iStart, 0, tw - jStart] = Convert.ToDouble(v[kw, tw].Value);
                        }
                    }
                    break;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    for (int tw = jStart; tw < jStart + (p.IsConstantFlowType() ? 1 : p.boundaryTimeNumber); ++tw)
                    {
                        for (int jw = iStart; jw < iStart + p.inputGrid.GetJ; ++jw)
                        {
                            o.Array3D()[tabIndex, jw - iStart, tw - jStart] = Convert.ToDouble(v[jw + 1, tw + 1].Value);
                        }
                    }
                    break;
                }
            }
            catch
            {
                return(false);
            }
            return(true);
        }
Example #19
0
        private void InitializeDataGridView()
        {
            if (inputFormType == InputFormType.SeparateForm)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, colName, rowName, nocolNum, noRowNum, false, true);
            }
            else if (inputFormType == InputFormType.VerticalVelocityDistributionForm)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, colName, rowName, nocolNum, noRowNum, false, true);
                dataGridView.Columns[0].Name = "垂向分層位置";
                dataGridView.Columns[1].Name = "比例係數";
            }
            else if (inputFormType == InputFormType.BoundaryTime)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, colName, rowName, nocolNum, noRowNum, false, false);
            }
            else if (inputFormType == InputFormType.TwoInOneDouble ||
                     inputFormType == InputFormType.TwoInOneDoubleGreaterThanZero ||
                     inputFormType == InputFormType.TwoInOneDoubleGreaterThanOrEqualZero)
            {
                RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
                Debug.Assert(o != null);

                singleValueTxt.Text = o.ValueDouble()[0].ToString();
                DataGridViewUtility.InitializeDataGridView(dataGridView, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, colName, rowName, nocolNum, noRowNum);
                selInputBtn.Visible = true;

                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    singleValueRdo.Checked = true;
                    break;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    tableValueRdo.Checked = true;
                    break;

                case RiverSimulationProfile.TwoInOne.Type.None:
                    singleValueRdo.Checked = false;
                    tableValueRdo.Checked  = false;
                    singleValueTxt.Enabled = false;
                    dataGridView.Enabled   = false;
                    break;
                }
            }
            else if (inputFormType == InputFormType.GenericDouble ||
                     inputFormType == InputFormType.GenericDoubleGreaterThanZero ||
                     inputFormType == InputFormType.GenericDoubleGreaterThanOrEqualZero)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, colName, rowName, nocolNum, noRowNum);
            }
            else if (inputFormType == InputFormType.FlowConditionsSettingConstant)
            {
                RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
                Debug.Assert(o != null);

                singleValueTxt.Text = o.ValueDouble()[0].ToString();
                DataGridViewUtility.InitializeDataGridView(dataGridView, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           "", colName, rowName, nocolNum, true);
                dataGridView.Rows[0].HeaderCell.Value = tableName;

                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    singleValueRdo.Checked = true;
                    break;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    tableValueRdo.Checked = true;
                    break;

                case RiverSimulationProfile.TwoInOne.Type.None:
                    singleValueRdo.Checked = false;
                    tableValueRdo.Checked  = false;
                    singleValueTxt.Enabled = false;
                    dataGridView.Enabled   = false;
                    break;
                }
            }
            else if (inputFormType == InputFormType.FlowConditionsSettingVariable)
            {
                RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
                Debug.Assert(o != null);

                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    singleValueRdo.Checked = true;
                    break;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    tableValueRdo.Checked = true;
                    break;

                case RiverSimulationProfile.TwoInOne.Type.None:
                    singleValueRdo.Checked = false;
                    tableValueRdo.Checked  = false;
                    singleValueTxt.Enabled = false;
                    dataGridView.Enabled   = false;
                    break;
                }
                singleValueTxt.Visible = (inputFormType == InputFormType.FlowConditionsSettingConstant) ? true :false;
            }
            else if (inputFormType == InputFormType.SeabedThicknessForm)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, colName, rowName, nocolNum, noRowNum, false, true);
                dataGridView.Rows[0].HeaderCell.Value = "作用層";
            }
            else if (inputFormType == InputFormType.SedimentCompositionRatioForm)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, colName, rowName, nocolNum, noRowNum, false, true);
                dataGridView.Rows[0].HeaderCell.Value = "作用層";
            }
            else if (inputFormType == InputFormType.BottomBedParticleSizeRatio)
            {
                InitTableBottomBedParticleSizeRatio();
            }

            else
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, colName, rowName, nocolNum, noRowNum);
            }

            FillDataGridView();
        }
Example #20
0
        private void CreateData(object d)
        {
            RiverSimulationProfile.TwoInOne o  = d as RiverSimulationProfile.TwoInOne;
            RiverSimulationProfile.TwoInOne _d = null;
            switch (_inputFormType)
            {
            case InputFormType.TwoInOneDouble:
            case InputFormType.TwoInOneDoubleGreaterThanZero:
            case InputFormType.TwoInOneDoubleGreaterThanOrEqualZero:
                Debug.Assert(o != null);
                _data = new RiverSimulationProfile.TwoInOne(d as RiverSimulationProfile.TwoInOne);
                _d    = _data as RiverSimulationProfile.TwoInOne;
                Debug.Assert(_d != null);
                if (o.ValueNull() || o.ArrayNull())
                {
                    (_data as RiverSimulationProfile.TwoInOne).CreateDouble2D(colCount, rowCount);
                }
                if (_d.Array2D().GetLength(0) != colCount || _d.Array2D().GetLength(1) != rowCount)
                {
                    Debug.Assert(false);
                }
                break;

            case InputFormType.GenericDouble:
            case InputFormType.GenericDoubleGreaterThanZero:
            case InputFormType.GenericDoubleGreaterThanOrEqualZero:
            case InputFormType.BottomBedParticleSizeRatio:
                if (d == null)
                {
                    _data = new double[colCount, rowCount];
                }
                else
                {
                    _data = (double [, ])(d as double[, ]).Clone();
                }
                break;

            case InputFormType.SeabedThicknessForm:
                if (d == null)
                {
                    _data = new double[rowCount];
                }
                else
                {
                    _data = (double [])(d as double[]).Clone();
                }
                break;

            case InputFormType.SedimentCompositionRatioForm:
                if (d == null)
                {
                    _data = new double[colCount, rowCount];
                }
                else
                {
                    _data = (double [, ])(d as double[, ]).Clone();
                }
                break;

            case InputFormType.SeparateForm:
            case InputFormType.BoundaryTime:
                if (d == null)
                {
                    _data = new double[rowCount];
                }
                else
                {
                    _data = (double [])(d as double[]).Clone();
                }
                break;

            case InputFormType.VerticalVelocityDistributionForm:
                if (d == null)
                {
                    _data = new double[2, rowCount];
                }
                else
                {
                    _data = (double [, ])(d as double[, ]).Clone();
                }
                break;

            case InputFormType.BottomElevationForm:
                if (d == null)
                {
                    _data = new CoorPoint[colCount, rowCount];
                }
                else
                {
                    _data = (CoorPoint[, ])(d as CoorPoint[, ]).Clone();
                }
                break;

            case InputFormType.FlowConditionsSettingConstant:
            case InputFormType.FlowConditionsSettingVariable:
                Debug.Assert(o != null);
                _data = new RiverSimulationProfile.TwoInOne(d as RiverSimulationProfile.TwoInOne);
                _d    = _data as RiverSimulationProfile.TwoInOne;
                if (o.ValueNull() || o.ArrayNull())
                {       //rowCount : Q1 ~ Q5, colCount : J1 ~ J15
                    _d.CreateDouble2D(colCount, rowCount);
                    // (_data as RiverSimulationProfile.TwoInOne).dataValue = new double[colCount, rowCount];
                }
                break;
            }
        }
        private void CreateData(Object d)
        {
            RiverSimulationProfile p = RiverSimulationProfile.profile;

            RiverSimulationProfile.TwoInOne o  = d as RiverSimulationProfile.TwoInOne;
            RiverSimulationProfile.TwoInOne _d = null;
            //第1, 3種:亞臨界流、均一值/逐點給、定量流
            if (inputData.criticalFlowType == RiverSimulationProfile.CriticalFlowType.SubCriticalFlow &&
                p.IsConstantFlowType())
            {
                if (d == null)
                {
                    _data = new RiverSimulationProfile.TwoInOne(RiverSimulationProfile.TwoInOne.ValueType.TwoDim, RiverSimulationProfile.TwoInOne.ArrayType.ThreeDim, RiverSimulationProfile.TwoInOne.Type.UseValue);
                    _d    = _data as RiverSimulationProfile.TwoInOne;
                }
                else
                {
                    _data = new RiverSimulationProfile.TwoInOne(o);
                    _d    = _data as RiverSimulationProfile.TwoInOne;
                }
                if (_d.type == RiverSimulationProfile.TwoInOne.Type.UseValue)
                {
                    colCount        = 2;
                    rowCount        = 1;
                    _inputFormType  = InputFormType.Type1;
                    tabPage1.Parent = tabControl;
                    tabPage2.Parent = null;
                    tabPage3.Parent = null;
                    tabPage1.Text   = "";

                    if (_d.ValueNull())
                    {
                        (_data as RiverSimulationProfile.TwoInOne).CreateValue2D(colCount, rowCount);
                    }
                }
                else
                {
                    colCount        = inputData.sideFlowPoints.Count;
                    rowCount        = 1;
                    _inputFormType  = InputFormType.Type3;
                    tabPage1.Parent = tabControl;
                    tabPage2.Parent = tabControl;
                    tabPage3.Parent = null;
                    tabPage1.Text   = "主流方向流量(cms)";
                    tabPage2.Text   = "側方向流量(cms)";

                    if (_d.ArrayNull())
                    {
                        (_data as RiverSimulationProfile.TwoInOne).CreateArray3D(colCount, rowCount, 2);
                    }
                }
            }
            //第2, 4種:亞臨界流、均一值/逐點給、變量流
            else if (inputData.criticalFlowType == RiverSimulationProfile.CriticalFlowType.SubCriticalFlow &&
                     p.IsVariableFlowType())
            {
                if (d == null)
                {
                    _data = new RiverSimulationProfile.TwoInOne(RiverSimulationProfile.TwoInOne.ValueType.ThreeDim, RiverSimulationProfile.TwoInOne.ArrayType.ThreeDim, RiverSimulationProfile.TwoInOne.Type.UseValue);
                    _d    = _data as RiverSimulationProfile.TwoInOne;
                }
                else
                {
                    _data = new RiverSimulationProfile.TwoInOne(o);
                    _d    = _data as RiverSimulationProfile.TwoInOne;
                }
                if (_d.type == RiverSimulationProfile.TwoInOne.Type.UseValue)
                {
                    colCount        = 1;
                    rowCount        = p.boundaryTime.Length;
                    _inputFormType  = InputFormType.Type2;
                    tabPage1.Parent = tabControl;
                    tabPage2.Parent = tabControl;
                    tabPage3.Parent = null;
                    tabPage1.Text   = "主流方向流量(cms)";
                    tabPage2.Text   = "側方向流量(cms)";

                    if (_d.ValueNull())
                    {
                        (_data as RiverSimulationProfile.TwoInOne).CreateValue3D(colCount, rowCount, 2);
                    }
                }
                else
                {
                    colCount        = inputData.sideFlowPoints.Count;
                    rowCount        = p.boundaryTime.Length;
                    _inputFormType  = InputFormType.Type4;
                    tabPage1.Parent = tabControl;
                    tabPage2.Parent = tabControl;
                    tabPage3.Parent = null;
                    tabPage1.Text   = "主流方向流量(cms)";
                    tabPage2.Text   = "側方向流量(cms)";

                    if (_d.ArrayNull())
                    {
                        (_data as RiverSimulationProfile.TwoInOne).CreateArray3D(colCount, rowCount, 2);
                    }
                }
            }
            //第5, 7種:超臨界流、均一值/逐點給、定量流
            else if (inputData.criticalFlowType == RiverSimulationProfile.CriticalFlowType.SuperCriticalFlow &&
                     p.IsConstantFlowType())
            {
                if (d == null)
                {
                    _data = new RiverSimulationProfile.TwoInOne(RiverSimulationProfile.TwoInOne.ValueType.TwoDim, RiverSimulationProfile.TwoInOne.ArrayType.ThreeDim, RiverSimulationProfile.TwoInOne.Type.UseValue);
                    _d    = _data as RiverSimulationProfile.TwoInOne;
                }
                else
                {
                    _data = new RiverSimulationProfile.TwoInOne(o);
                    _d    = _data as RiverSimulationProfile.TwoInOne;
                }
                if (_d.type == RiverSimulationProfile.TwoInOne.Type.UseValue)
                {
                    colCount        = 3;
                    rowCount        = 1;
                    _inputFormType  = InputFormType.Type5;
                    tabPage1.Parent = tabControl;
                    tabPage2.Parent = null;
                    tabPage3.Parent = null;
                    tabPage1.Text   = "";

                    if (_d.ValueNull())
                    {
                        (_data as RiverSimulationProfile.TwoInOne).CreateValue2D(colCount, rowCount);
                    }
                }
                else
                {
                    colCount        = inputData.sideFlowPoints.Count;
                    rowCount        = 1;
                    _inputFormType  = InputFormType.Type7;
                    tabPage1.Parent = tabControl;
                    tabPage2.Parent = tabControl;
                    tabPage3.Parent = tabControl;
                    tabPage1.Text   = "主流方向流量(cms)";
                    tabPage2.Text   = "側方向流量(cms)";
                    tabPage3.Text   = "水位(m)";

                    if (_d.ArrayNull())
                    {
                        (_data as RiverSimulationProfile.TwoInOne).CreateArray3D(colCount, rowCount, 3);
                    }
                }
            }
            //第6, 8種:超臨界流、均一值/逐點給、變量流
            else if (inputData.criticalFlowType == RiverSimulationProfile.CriticalFlowType.SuperCriticalFlow &&
                     p.IsVariableFlowType())
            {
                if (d == null)
                {
                    _data = new RiverSimulationProfile.TwoInOne(RiverSimulationProfile.TwoInOne.ValueType.ThreeDim, RiverSimulationProfile.TwoInOne.ArrayType.ThreeDim, RiverSimulationProfile.TwoInOne.Type.UseValue);
                    _d    = _data as RiverSimulationProfile.TwoInOne;
                }
                else
                {
                    _data = new RiverSimulationProfile.TwoInOne(o);
                    _d    = _data as RiverSimulationProfile.TwoInOne;
                }
                if (_d.type == RiverSimulationProfile.TwoInOne.Type.UseValue)
                {
                    colCount        = 1;
                    rowCount        = p.boundaryTime.Length;
                    _inputFormType  = InputFormType.Type6;
                    tabPage1.Parent = tabControl;
                    tabPage2.Parent = tabControl;
                    tabPage3.Parent = tabControl;
                    tabPage1.Text   = "主流方向流量(cms)";
                    tabPage2.Text   = "側方向流量(cms)";
                    tabPage3.Text   = "水位(m)";

                    if (_d.ValueNull())
                    {
                        (_data as RiverSimulationProfile.TwoInOne).CreateValue3D(colCount, rowCount, 3);
                    }
                }
                else
                {
                    colCount        = inputData.sideFlowPoints.Count;
                    rowCount        = p.boundaryTime.Length;
                    _inputFormType  = InputFormType.Type8;
                    tabPage1.Parent = tabControl;
                    tabPage2.Parent = tabControl;
                    tabPage3.Parent = tabControl;
                    tabPage1.Text   = "主流方向流量(cms)";
                    tabPage2.Text   = "側方向流量(cms)";
                    tabPage3.Text   = "水位(m)";

                    if (_d.ArrayNull())
                    {
                        (_data as RiverSimulationProfile.TwoInOne).CreateArray3D(colCount, rowCount, 3);
                    }
                }
            }
        }
Example #22
0
        private void type1Btn_Click(object sender, EventArgs e)
        {
            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
            if (formType == FormType.FlowQuantity)
            {   //流量 - 均一值 與 逐點輸入切換
                if (!ConvertFlowQuantityData())
                {
                    MessageBox.Show("輸入資料格式錯誤,請先修正!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    return;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    o.type = RiverSimulationProfile.TwoInOne.Type.UseValue;
                    break;
                }
                InitializeDataGridView();
            }
            else if (formType == FormType.WaterLevel)
            {   //流量 - 均一值 與 逐點輸入切換
                if (!ConvertWaterLevelData())
                {
                    MessageBox.Show("輸入資料格式錯誤,請先修正!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    return;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    o.type = RiverSimulationProfile.TwoInOne.Type.UseValue;
                    break;
                }
                InitializeDataGridView();
            }
            else if (formType == FormType.BottomBedLoadFlux)
            {   //底床載 - 均一值 與 逐點輸入切換
                if (!ConvertBottomBedLoadFluxData())
                {
                    MessageBox.Show("輸入資料格式錯誤,請先修正!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    return;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    o.type = RiverSimulationProfile.TwoInOne.Type.UseValue;
                    break;
                }
                InitializeDataGridView();
            }
            else if (formType == FormType.DepthAverageConcentration)
            {   //均一值 與 逐點輸入切換
                if (!ConvertDepthAverageConcentrationData())
                {
                    MessageBox.Show("輸入資料格式錯誤,請先修正!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    return;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    o.type = RiverSimulationProfile.TwoInOne.Type.UseValue;
                    break;
                }
                InitializeDataGridView();
            }
        }
Example #23
0
        private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;

            if (formType == FormType.DepthAverageConcentration && e.ColumnIndex == 0 && e.RowIndex == jStart + rowCount + 1)
            {   //均一值 與 逐點輸入切換
                if (!ConvertDepthAverageConcentrationData())
                {
                    MessageBox.Show("輸入資料格式錯誤,請先修正!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    o.type = RiverSimulationProfile.TwoInOne.Type.UseArray;
                    break;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    o.type = RiverSimulationProfile.TwoInOne.Type.UseValue;
                    break;
                }
                InitializeDataGridView();
            }
            else if (formType == FormType.BottomBedLoadFlux && e.ColumnIndex == iStart && e.RowIndex == jStart - 1)
            {   //套用到全部
                if (!ConvertBottomBedLoadFluxData())
                {
                    MessageBox.Show("輸入資料格式錯誤,請先修正!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return;
                }
                BottomBedLoadFluxApplyAll();
                InitializeDataGridView();
            }
            else if (formType == FormType.BottomBedLoadFlux && e.RowIndex == 0 && e.ColumnIndex >= iStart + 1 && e.ColumnIndex < iStart + p.sedimentParticlesNumber + 1 && o.type == RiverSimulationProfile.TwoInOne.Type.UseArray)
            {   //三維陣列標籤列
                int index = e.ColumnIndex - iStart - 1;
                if (tabIndex != index)
                {
                    if (!ConvertBottomBedLoadFluxData())
                    {
                        MessageBox.Show("輸入資料格式錯誤,請先修正!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                    tabIndex = index;
                    InitializeDataGridView();
                }
            }
            else if (formType == FormType.DepthAverageConcentration && e.RowIndex == 0 && e.ColumnIndex >= iStart && e.ColumnIndex < iStart + p.sedimentParticlesNumber && o.type == RiverSimulationProfile.TwoInOne.Type.UseArray)
            {   //三維陣列標籤列
                int index = e.ColumnIndex - iStart;
                if (tabIndex != index)
                {
                    if (!ConvertDepthAverageConcentrationData())
                    {
                        MessageBox.Show("輸入資料格式錯誤,請先修正!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                    tabIndex = index;
                    InitializeDataGridView();
                }
            }
            //else if (formType == FormType.FlowQuantity && e.ColumnIndex == 0 && e.RowIndex == jStart + rowCount)
            //{   //進階模式勾選
            //    dataGridView[0, jStart + rowCount].Value = !(bool)dataGridView[0, jStart + rowCount].Value;
            //    o.check = (bool)dataGridView[0, jStart + rowCount].Value;
            //}
            //else if (formType == FormType.FlowQuantity && o.type == RiverSimulationProfile.TwoInOne.Type.UseArray &&
            //    e.ColumnIndex >= iStart && e.ColumnIndex < iStart + colCount - 1 && e.RowIndex >= jStart && e.RowIndex < jStart + rowCount)
            //{
            //    AutoFinishConvertFlowQualityCell();
            //}
        }
Example #24
0
        private void FillDataGridView()
        {
            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
            if (formType == FormType.FlowQuantity || formType == FormType.WaterLevel)
            {
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    for (int jw = jStart; jw < jStart + rowCount; ++jw)
                    {
                        dataGridView[iStart, jw].Value           = o.Value2D()[0, jw - jStart].ToString();
                        dataGridView[iStart, jw].ReadOnly        = false;
                        dataGridView[iStart, jw].Style.BackColor = tabPageItemColor;
                    }
                    dataGridView.CurrentCell = dataGridView[iStart, jStart];
                    //dataGridView[1, jStart]. = true;
                    break;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    if (formType == FormType.FlowQuantity)
                    {
                        for (int jw = jStart; jw < jStart + rowCount; ++jw)
                        {
                            dataGridView[iStart, jw].Value           = o.Value2D()[0, jw - jStart].ToString();
                            dataGridView[iStart, jw].ReadOnly        = true;
                            dataGridView[iStart, jw].Style.BackColor = tabPageItemColor2;
                        }
                    }

                    for (int jw = jStart; jw < jStart + rowCount; ++jw)
                    {
                        for (int iw = iStart; iw < iStart + colCount; ++iw)
                        {
                            if (formType == FormType.FlowQuantity)
                            {
                                dataGridView[iw + 1, jw].Value           = o.Array2D()[iw - iStart, jw - jStart].ToString();
                                dataGridView[iw + 1, jw].ReadOnly        = false;
                                dataGridView[iw + 1, jw].Style.BackColor = tabPageItemColor;
                            }
                            else
                            {
                                dataGridView[iw, jw].Value           = o.Array2D()[iw - iStart, jw - jStart].ToString();
                                dataGridView[iw, jw].ReadOnly        = false;
                                dataGridView[iw, jw].Style.BackColor = tabPageItemColor;
                            }
                        }
                    }
                    if (formType == FormType.FlowQuantity)
                    {
                        AutoFinishConvertFlowQualityCell();
                    }
                    dataGridView.CurrentCell = dataGridView[iStart, jStart];
                    break;
                }
            }
            else if (formType == FormType.BottomBedLoadFlux)
            {
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    for (int tw = jStart; tw < jStart + (p.IsConstantFlowType() ? 1 : p.boundaryTimeNumber); ++tw)
                    {
                        for (int kw = iStart; kw < iStart + p.sedimentParticlesNumber; ++kw)
                        {
                            dataGridView[kw, tw].Value           = o.Value3D()[kw - iStart, 0, tw - jStart].ToString();
                            dataGridView[kw, tw].ReadOnly        = false;
                            dataGridView[kw, tw].Style.BackColor = tabPageItemColor;
                        }
                    }
                    dataGridView.CurrentCell = dataGridView[iStart, jStart];
                    break;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    for (int tw = jStart; tw < jStart + (p.IsConstantFlowType() ? 1 : p.boundaryTimeNumber); ++tw)
                    {
                        for (int jw = iStart; jw < iStart + p.inputGrid.GetJ; ++jw)
                        {
                            dataGridView[jw + 1, tw + 1].Value           = o.Array3D()[tabIndex, jw - iStart, tw - jStart].ToString();
                            dataGridView[jw + 1, tw + 1].ReadOnly        = false;
                            dataGridView[jw + 1, tw + 1].Style.BackColor = tabPageItemColor;
                        }
                        dataGridView[iStart, tw + 1].Value           = o.Value3D()[tabIndex, 0, tw - jStart].ToString();
                        dataGridView[iStart, tw + 1].ReadOnly        = true;
                        dataGridView[iStart, tw + 1].Style.BackColor = tabPageItemColor2;
                    }
                    dataGridView.CurrentCell = dataGridView[iStart, jStart];
                    break;
                }
            }
            else if (formType == FormType.DepthAverageConcentration)
            {
                switch (o.type)
                {
                case RiverSimulationProfile.TwoInOne.Type.None:
                case RiverSimulationProfile.TwoInOne.Type.UseValue:
                    for (int jw = jStart; jw < jStart + 1; ++jw)
                    {
                        for (int iw = iStart; iw < iStart + p.sedimentParticlesNumber; ++iw)
                        {
                            dataGridView[iw, jw].Value           = o.Value3D()[iw - iStart, 0, 0].ToString();
                            dataGridView[iw, jw].ReadOnly        = false;
                            dataGridView[iw, jw].Style.BackColor = tabPageItemColor;
                        }
                    }
                    dataGridView.CurrentCell = dataGridView[iStart, jStart];
                    break;

                case RiverSimulationProfile.TwoInOne.Type.UseArray:
                    for (int jw = jStart; jw < jStart + p.inputGrid.GetI; ++jw)
                    {
                        for (int iw = iStart; iw < iStart + p.inputGrid.GetJ; ++iw)
                        {
                            dataGridView[iw, jw].Value           = o.Array3D()[tabIndex, iw - iStart, jw - jStart].ToString();
                            dataGridView[iw, jw].ReadOnly        = false;
                            dataGridView[iw, jw].Style.BackColor = tabPageItemColor;
                        }
                    }
                    dataGridView.CurrentCell = dataGridView[iStart, jStart];
                    break;
                }
            }
            dataGridView.PerformLayout();
        }
Example #25
0
        private void InitTableFlowQuantity()
        {
            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
            if (o == null)
            {
                return;
            }

            if (p.IsVariableFlowType())
            {   //變量流需顯示邊界時間欄位
                dataGridView[0, jStart - 1].Value           = timeTitle;
                dataGridView[0, jStart - 1].Style.BackColor = rowHeaderColor;
                for (int jw = jStart; jw < jStart + p.boundaryTimeNumber; ++jw)
                {
                    dataGridView[0, jw].Value           = p.boundaryTime[jw - jStart].ToString();
                    dataGridView[0, jw].Style.BackColor = rowHeaderColor;
                }
            }
            switch (o.type)
            {
            case RiverSimulationProfile.TwoInOne.Type.None:
            case RiverSimulationProfile.TwoInOne.Type.UseValue:
                for (int iw = iStart; iw < iStart + 1; ++iw)
                {       //填入橫排標題, 只有一欄
                    dataGridView[iw, jStart - 1].Value           = iTitle;
                    dataGridView[iw, jStart - 1].Style.BackColor = colHeaderColor1;
                }
                type1Btn.Enabled = false;
                type2Btn.Enabled = true;

                break;

            case RiverSimulationProfile.TwoInOne.Type.UseArray:
                dataGridView[iStart, jStart - 1].Value           = iTitle;
                dataGridView[iStart, jStart - 1].Style.BackColor = colHeaderColor1;

                for (int iw = iStart; iw < iStart + colCount; ++iw)
                {       //填入橫排標題
                    dataGridView[iw + 1, jStart - 1].Value           = iTitle + (iw - iStart + 1).ToString() + "比例";
                    dataGridView[iw + 1, jStart - 1].Style.BackColor = colHeaderColor2;
                }
                type1Btn.Enabled = true;
                type2Btn.Enabled = false;
                break;
            }

            if (o.check)
            {
                type2Rdo.Checked = true;
            }
            else
            {
                type1Rdo.Checked = true;
            }
            //DataGridViewButtonCell b = new DataGridViewButtonCell();
            //b.Value = buttonText;
            //b.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //dataGridView[0, jStart + rowCount + 1] = b;

            //if (formType == FormType.FlowQuantity)
            //{
            //    DataGridViewCheckBoxCell c = new DataGridViewCheckBoxCell();
            //    c.Value = o.check;
            //    c.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
            //    dataGridView[0, jStart + rowCount] = c;
            //}
        }
Example #26
0
        private void InitTableBottomBedLoadFlux()
        {
            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
            if (o == null)
            {
                return;
            }

            int jShift = (o.type == RiverSimulationProfile.TwoInOne.Type.UseArray) ? 1 : 0;

            if (p.IsVariableFlowType())
            {   //變量流需顯示邊界時間欄位
                dataGridView[0, jStart - 1 + jShift].Value           = timeTitle;
                dataGridView[0, jStart - 1 + jShift].Style.BackColor = rowHeaderColor;

                for (int jw = jStart; jw < jStart + p.boundaryTimeNumber; ++jw)
                {
                    dataGridView[0, jw + jShift].Value           = p.boundaryTime[jw - jStart].ToString();
                    dataGridView[0, jw + jShift].Style.BackColor = rowHeaderColor;
                }
            }

            //DataGridViewButtonCell b = null;
            switch (o.type)
            {
            case RiverSimulationProfile.TwoInOne.Type.None:
            case RiverSimulationProfile.TwoInOne.Type.UseValue:
                for (int iw = iStart; iw < iStart + p.sedimentParticlesNumber; ++iw)
                {       //填入橫排標題,泥砂數目(K)
                    dataGridView[iw, jStart - 1].Value           = iTitle + (iw - iStart + 1).ToString();
                    dataGridView[iw, jStart - 1].Style.BackColor = colHeaderColor1;
                }
                type1Btn.Enabled = false;
                type2Btn.Enabled = true;
                break;

            case RiverSimulationProfile.TwoInOne.Type.UseArray:
                dataGridView[iStart, jStart].Value           = "粒徑" + (tabIndex + 1).ToString();
                dataGridView[iStart, jStart].Style.BackColor = colHeaderColor2;
                for (int iw = iStart; iw < iStart + p.inputGrid.GetJ; ++iw)
                {       //填入橫排標題,J個
                    dataGridView[iw + 1, jStart].Value           = (iw - iStart + 1).ToString() + "比例%";
                    dataGridView[iw + 1, jStart].Style.BackColor = colHeaderColor1;
                }
                for (int iw = iStart; iw < iStart + p.sedimentParticlesNumber; ++iw)
                {       //填入標籤標題,K個
                    dataGridView[iw + 1, jStart - 1].Value           = iTitle + (iw - iStart + 1).ToString();
                    dataGridView[iw + 1, jStart - 1].Style.BackColor = (tabIndex == (iw - iStart)) ? tabActiveColor : tabItemColor;
                }
                DataGridViewButtonCell b = new DataGridViewButtonCell();
                b.Value           = "比例套用到全部";
                b.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dataGridView[iStart, jStart - 1] = b;

                type1Btn.Enabled = true;
                type2Btn.Enabled = false;
                break;
            }

            if (o.check)
            {
                type2Rdo.Checked = true;
            }
            else
            {
                type1Rdo.Checked = true;
            }
        }
        private void InitializeDataGridView()
        {
            RiverSimulationProfile.TwoInOne o = _data as RiverSimulationProfile.TwoInOne;
            switch (o.type)
            {
            case RiverSimulationProfile.TwoInOne.Type.UseValue:
                singleValueRdo.Checked = true;
                break;

            case RiverSimulationProfile.TwoInOne.Type.UseArray:
                tableValueRdo.Checked = true;
                break;

            case RiverSimulationProfile.TwoInOne.Type.None:
                Debug.Assert(false);
                break;
            }

            if (inputFormType == InputFormType.Type1)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView1, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, "", "", false, false, false, false);
                dataGridView1.Columns[0].Name = "主流方向流量(cms)";
                dataGridView1.Columns[1].Name = "側方向流量(cms)";
            }
            else if (inputFormType == InputFormType.Type2)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView1, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           "時間 T (sec)", "主流方向流量(cms)", "", true, true, false, false);
                DataGridViewUtility.InitializeDataGridView(dataGridView2, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           "時間 T (sec)", "側方向流量(cms)", "", true, true, false, false);
                for (int i = 0; i < p.boundaryTime.Length; ++i)
                {
                    dataGridView1.Rows[i].HeaderCell.Value = p.boundaryTime[i].ToString();
                    dataGridView2.Rows[i].HeaderCell.Value = p.boundaryTime[i].ToString();
                }
                dataGridView1.Columns[0].Name = "主流方向流量(cms)";
                dataGridView2.Columns[0].Name = "側方向流量(cms)";
            }
            else if (inputFormType == InputFormType.Type3)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView1, colCount, rowCount, 72, 140,
                                                           "", "", "主流方向流量(cms)", false, true, false, false);
                DataGridViewUtility.InitializeDataGridView(dataGridView2, colCount, rowCount, 72, 140,
                                                           "", "", "側方向流量(cms)", false, true, false, false);
                for (int i = 0; i < colCount; ++i)
                {
                    int start = inputData.sideFlowPoints.OrderBy(p => p.X).ToArray()[0].X;
                    dataGridView1.Columns[i].Name = (i + start + 1).ToString();
                    dataGridView2.Columns[i].Name = (i + start + 1).ToString();
                }
            }
            else if (inputFormType == InputFormType.Type4)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView1, colCount, rowCount, 72, 140,
                                                           "時間 T (sec)", "", "", false, false, false, false);
                DataGridViewUtility.InitializeDataGridView(dataGridView2, colCount, rowCount, 72, 140,
                                                           "時間 T (sec)", "", "", false, false, false, false);
                for (int i = 0; i < p.boundaryTime.Length; ++i)
                {
                    dataGridView1.Rows[i].HeaderCell.Value = p.boundaryTime[i].ToString();
                    dataGridView2.Rows[i].HeaderCell.Value = p.boundaryTime[i].ToString();
                }

                for (int i = 0; i < colCount; ++i)
                {
                    int start = inputData.sideFlowPoints.OrderBy(p => p.X).ToArray()[0].X;
                    dataGridView1.Columns[i].Name = (i + start + 1).ToString();
                    dataGridView2.Columns[i].Name = (i + start + 1).ToString();
                }
            }
            else if (inputFormType == InputFormType.Type5)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView1, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           tableName, "", "", true, true, false, false);
                dataGridView1.Columns[0].Name = "主流方向流量(cms)";
                dataGridView1.Columns[1].Name = "側方向流量(cms)";
                dataGridView1.Columns[2].Name = "水位(m)";
            }
            else if (inputFormType == InputFormType.Type7)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView1, colCount, rowCount, 72, 140,
                                                           "", "", "主流方向流量(cms)", false, true, false, false);
                DataGridViewUtility.InitializeDataGridView(dataGridView2, colCount, rowCount, 72, 140,
                                                           "", "", "側方向流量(cms)", false, true, false, false);
                DataGridViewUtility.InitializeDataGridView(dataGridView3, colCount, rowCount, 72, 140,
                                                           "", "", "水位(m)", false, true, false, false);
                for (int i = 0; i < colCount; ++i)
                {
                    int start = inputData.sideFlowPoints.OrderBy(p => p.X).ToArray()[0].X;
                    dataGridView1.Columns[i].Name = (i + start + 1).ToString();
                    dataGridView2.Columns[i].Name = (i + start + 1).ToString();
                    dataGridView3.Columns[i].Name = (i + start + 1).ToString();
                }
            }
            else if (inputFormType == InputFormType.Type6)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView1, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           "時間 T (sec)", "主流方向流量(cms)", "", true, true, false, false);
                DataGridViewUtility.InitializeDataGridView(dataGridView2, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           "時間 T (sec)", "側方向流量(cms)", "", true, true, false, false);
                DataGridViewUtility.InitializeDataGridView(dataGridView3, colCount, rowCount, colWidth, rowHeadersWidth,
                                                           "時間 T (sec)", "水位(m)", "", true, true, false, false);
                for (int i = 0; i < p.boundaryTime.Length; ++i)
                {
                    dataGridView1.Rows[i].HeaderCell.Value = p.boundaryTime[i].ToString();
                    dataGridView2.Rows[i].HeaderCell.Value = p.boundaryTime[i].ToString();
                    dataGridView3.Rows[i].HeaderCell.Value = p.boundaryTime[i].ToString();
                }
                dataGridView1.Columns[0].Name = "主流方向流量(cms)";
                dataGridView2.Columns[0].Name = "側方向流量(cms)";
                dataGridView3.Columns[0].Name = "水位(m)";
            }
            else if (inputFormType == InputFormType.Type8)
            {
                DataGridViewUtility.InitializeDataGridView(dataGridView1, colCount, rowCount, 72, 140,
                                                           "時間 T (sec)", "", "", false, false, false, false);
                DataGridViewUtility.InitializeDataGridView(dataGridView2, colCount, rowCount, 72, 140,
                                                           "時間 T (sec)", "", "", false, false, false, false);
                DataGridViewUtility.InitializeDataGridView(dataGridView3, colCount, rowCount, 72, 140,
                                                           "時間 T (sec)", "", "", false, false, false, false);
                for (int i = 0; i < p.boundaryTime.Length; ++i)
                {
                    dataGridView1.Rows[i].HeaderCell.Value = p.boundaryTime[i].ToString();
                    dataGridView2.Rows[i].HeaderCell.Value = p.boundaryTime[i].ToString();
                    dataGridView3.Rows[i].HeaderCell.Value = p.boundaryTime[i].ToString();
                }

                for (int i = 0; i < colCount; ++i)
                {
                    int start = inputData.sideFlowPoints.OrderBy(p => p.X).ToArray()[0].X;
                    dataGridView1.Columns[i].Name = (i + start + 1).ToString();
                    dataGridView2.Columns[i].Name = (i + start + 1).ToString();
                    dataGridView3.Columns[i].Name = (i + start + 1).ToString();
                }
            }

            foreach (DataGridViewColumn column in dataGridView1.Columns)
            {
                column.SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            foreach (DataGridViewColumn column in dataGridView2.Columns)
            {
                column.SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            foreach (DataGridViewColumn column in dataGridView3.Columns)
            {
                column.SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            FillDataGridView();
        }