예제 #1
0
        /// <summary>
        /// 初期化処理
        /// </summary>
        private void init()
        {
            CadModeRadioButtons = new RadioButton[]
            {
                radioBtnNone,
                radioBtnLocation,
                radioBtnArea,
                radioBtnPort,
                radioBtnErase,
                radioBtnIncidentPort,
                radioBtnPortNumbering
            };
            // Cadモードをラジオボタンに紐づける
            CadLogic.CadModeType[] cadModeTypeForRadioButtons = new CadLogic.CadModeType[]
            {
                CadLogic.CadModeType.None,
                CadLogic.CadModeType.Location,
                CadLogic.CadModeType.Area,
                CadLogic.CadModeType.Port,
                CadLogic.CadModeType.Erase,
                CadLogic.CadModeType.IncidentPort,
                CadLogic.CadModeType.PortNumbering
            };
            System.Diagnostics.Debug.Assert(CadModeRadioButtons.Length == cadModeTypeForRadioButtons.Length);
            for (int i = 0; i < CadModeRadioButtons.Length; i++)
            {
                CadModeRadioButtons[i].Tag = cadModeTypeForRadioButtons[i];
            }
            // エリア選択描画モードタイプコンボボックスのItemにCadモードを紐づける
            CadModeTypeStruct[] cadModeTypeStructsForImgCBoxCadModeArea = new CadModeTypeStruct[]
            {
                new CadModeTypeStruct("自由描画", CadLogic.CadModeType.AreaFH),
                new CadModeTypeStruct("長方形描画", CadLogic.CadModeType.Area),
                new CadModeTypeStruct("直線描画", CadLogic.CadModeType.AreaLine),
                new CadModeTypeStruct("楕円描画", CadLogic.CadModeType.AreaEllipse)
            };
            // コンボボックスのアイテムをクリア
            imgcbxCadModeArea.Items.Clear();
            foreach (CadModeTypeStruct cadModeTypeStruct in cadModeTypeStructsForImgCBoxCadModeArea)
            {
                // コンボボックスにアイテムを追加
                imgcbxCadModeArea.Items.Add(cadModeTypeStruct);
                foreach (CadLogic.CadModeType defCadMode in cadModeTypeForRadioButtons)
                {
                    if (defCadMode == cadModeTypeStruct.CadMode)
                    {
                        //この時点ではCadLogicがないのでイベントハンドラの実行を抑制する
                        imgcbxCadModeArea.SelectedIndexChanged -= imgcbxCadModeArea_SelectedIndexChanged;
                        // 選択する
                        imgcbxCadModeArea.SelectedItem = cadModeTypeStruct;
                        // イベントハンドラを再設定
                        imgcbxCadModeArea.SelectedIndexChanged += imgcbxCadModeArea_SelectedIndexChanged;
                    }
                }
            }
            imgcbxCadModeArea.Visible = false;
            // 消しゴム描画モードタイプコンボボックスのItemにCadモードを紐づける
            CadModeTypeStruct[] cadModeTypeStructsForImgCBoxCadModeErase = new CadModeTypeStruct[]
            {
                new CadModeTypeStruct("自由消去", CadLogic.CadModeType.EraseFH),
                new CadModeTypeStruct("長方形消去", CadLogic.CadModeType.Erase),
                new CadModeTypeStruct("直線消去", CadLogic.CadModeType.EraseLine)
            };
            // コンボボックスのアイテムをクリア
            imgcbxCadModeErase.Items.Clear();
            foreach (CadModeTypeStruct cadModeTypeStruct in cadModeTypeStructsForImgCBoxCadModeErase)
            {
                // コンボボックスにアイテムを追加
                imgcbxCadModeErase.Items.Add(cadModeTypeStruct);
                foreach (CadLogic.CadModeType defCadMode in cadModeTypeForRadioButtons)
                {
                    if (defCadMode == cadModeTypeStruct.CadMode)
                    {
                        //この時点ではCadLogicがないのでイベントハンドラの実行を抑制する
                        imgcbxCadModeErase.SelectedIndexChanged -= imgcbxCadModeErase_SelectedIndexChanged;
                        // 選択する
                        imgcbxCadModeErase.SelectedItem = cadModeTypeStruct;
                        // イベントハンドラを再設定
                        imgcbxCadModeErase.SelectedIndexChanged += imgcbxCadModeErase_SelectedIndexChanged;
                    }
                }
            }
            imgcbxCadModeErase.Visible = false;
            MediaRadioButtons = new RadioButton[]
            {
                radioBtnMedia0, // 真空
                radioBtnMedia1, // 誘電体1
                radioBtnMedia2  // 誘電体2
            };
            EpsTextBoxes = new TextBox[]
            {
                textBoxEps0, // 真空
                textBoxEps1, // 誘電体1
                textBoxEps2  // 誘電体2
            };
            System.Diagnostics.Debug.Assert(MediaRadioButtons.Length == Constants.MaxMediaCount);
            System.Diagnostics.Debug.Assert(EpsTextBoxes.Length == Constants.MaxMediaCount);
            panelMedia.Visible = false;
            btnLoadCancel.Visible = false;

            CadLgc = new CadLogic(CadPanel);
            CadLgc.Change += new CadLogic.ChangeDeleagte(CadLgc_Change);
            Solver = new FemSolver();
            PostPro = new FemPostProLogic();
            //TEST 4画面表示
            FValuePanelIndex = FValuePanelFieldDV_ValueDVPairList.Length; //0;
            // 等高線図パネルインデックス変更時の処理
            changeFValuePanelIndexProc(false);

            // アプリケーションの終了イベントハンドラを設定する
            AppDomain.CurrentDomain.ProcessExit += (sender, e) =>
            {
                System.Diagnostics.Debug.WriteLine("Process exiting");
                //System.Diagnostics.Debug.WriteLine("Process exiting");
                // フォームの破棄処理を呼び出す
                this.Dispose();
            };

            // パネルサイズを記憶する
            savePanelSize();

            //this.DoubleBuffered = true;
            // ダブルバッファ制御用のプロパティを強制的に取得する
            System.Reflection.PropertyInfo p;
            p = typeof(System.Windows.Forms.Control).GetProperty(
                         "DoubleBuffered",
                          System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
            // ダブルバッファを有効にする
            p.SetValue(CadPanel, true, null);
            p.SetValue(FValuePanel, true, null);

            // フォームのタイトルを退避
            TitleBaseName = this.Text + " " + MyUtilLib.MyUtil.getAppVersion();

            // ファイル名付きフォームタイトルを設定
            setFrmTitle();

            // GUI初期化
            resetGUI();
        }