/// <summary>
        /// データグリッドビューをダブルクリックした際に呼び出される。
        /// 主にキーの設定や、スキルアイコンの設定に使用する。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgv_CellDoubleClick( object sender, DataGridViewCellEventArgs e )
        {
            if( this.dgv.SelectedCells.Count != 1 ) {
                return;
            }
            this._otherWindowOpen = true;
            var sequence = int.Parse( (string)this.dgv.Rows[this.dgv.SelectedCells[0].OwningRow.Index].Cells[DgvCol.SEQUENCE].Value );
            // ReSharper disable once SwitchStatementMissingSomeCases
            switch( this.dgv.SelectedCells[0].OwningColumn.Name ) {
                case DgvCol.PUSH: {
                        //textbox
                        var ksf = new KeySetForm();
                        foreach( var act in CurrentSettingFile.Value.Where( act => act.Id == sequence ) ) {
                            ksf.keyType = KeySetForm.KeyType.MULTI;
                            ksf.ShowDialog();
                            if( ksf.result == KeySetForm.Result.OK ) {
                                act.Push = ksf.KeyData;
                            }
                            break;
                        }
                        if( ksf.result == KeySetForm.Result.OK && ksf.KeyData.Length != 0 ) {
                            this.dgv.Rows[this.dgv.SelectedCells[0].OwningRow.Index].Cells[this.dgv.SelectedCells[0].OwningColumn.Name].Value = KeysToText( ksf.KeyData, " + " );
                        }

                        ksf.Dispose();
                        break;
                    }
                case DgvCol.SEND: {
                        //textbox
                        var ksf = new KeySetForm();
                        foreach( var act in CurrentSettingFile.Value.Where( act => act.Id == sequence ) ) {
                            switch( act.Type ) {
                                case Act.InstanceType.COMMAND:
                                    ksf.keyType = KeySetForm.KeyType.MULTI;
                                    ksf.ShowDialog();
                                    if( ksf.result == KeySetForm.Result.OK ) {
                                        ( (Command)( act ) ).sendList = ksf.KeyData;
                                    }
                                    break;
                                case Act.InstanceType.BARRAGE:
                                    ksf.ShowDialog();
                                    if( ksf.result == KeySetForm.Result.OK ) {
                                        ( (Barrage)act ).send = ksf.KeyData[0];
                                    }
                                    break;
                                case Act.InstanceType.TOGGLE:
                                    ksf.ShowDialog();
                                    if( ksf.result == KeySetForm.Result.OK ) {
                                        ( (Toggle)act ).send = ksf.KeyData[0];
                                    }
                                    break;
                                case Act.InstanceType.MOUSE:
                                    ksf.Dispose();
                                    var msf = new MouseSetForm( ( (Behavior.Action.Mouse)act ).mouseData );

                                    msf.ShowDialog();
                                    if( msf.result == MouseSetForm.Result.OK ) {
                                        if( msf.editedFlag ) {
                                            EditedFlag = true;
                                        }
                                        ( (Behavior.Action.Mouse)act ).mouseData = msf.mouseData;
                                        this.dgv.Rows[this.dgv.SelectedCells[0].OwningRow.Index].Cells[this.dgv.SelectedCells[0].OwningColumn.Name].Value = "マウス操作[" + msf.mouseData.Value.Count + "]";
                                    }
                                    this._otherWindowOpen = false;
                                    return;
                                default:
                                    throw new ArgumentOutOfRangeException();
                            }
                            break;
                        }
                        if( ksf.result == KeySetForm.Result.OK && ksf.KeyData.Length != 0 ) {
                            this.dgv.Rows[this.dgv.SelectedCells[0].OwningRow.Index].Cells[this.dgv.SelectedCells[0].OwningColumn.Name].Value = KeysToText( ksf.KeyData );
                        }

                        ksf.Dispose();
                        break;
                    }
                case DgvCol.ENABLE_SKILL_ICON:
                case DgvCol.DISABLE_SKILL_ICON: {
                        var ofd = new OpenFileDialog {
                            Filter = "Image File(*.gif;*.jpg;*.bmp;*.wmf;*.png)|*.gif;*.jpg;*.bmp;*.wmf;*.png",
                            Title = "スキルアイコン画像を選択",
                            InitialDirectory = Application.ExecutablePath,
                            RestoreDirectory = true
                        };
                        if( ofd.ShowDialog() == DialogResult.OK ) {
                            this.dgv.Rows[this.dgv.SelectedCells[0].OwningRow.Index].Cells[this.dgv.SelectedCells[0].OwningColumn.Name].Value = new Bitmap( ofd.FileName );
                            foreach( var act in CurrentSettingFile.Value.Where( act => act.Id == sequence ) ) {
                                switch( this.dgv.SelectedCells[0].OwningColumn.Name ) {
                                    case DgvCol.ENABLE_SKILL_ICON:
                                        act.SkillIcon = new Bitmap( ofd.FileName );
                                        break;
                                    case DgvCol.DISABLE_SKILL_ICON:
                                        act.DisableSkillIcon = new Bitmap( ofd.FileName );
                                        break;
                                }
                            }
                        }
                        break;
                    }
            }
            this._otherWindowOpen = false;
        }
 /// <summary>
 /// ホットキー変更時のイベント
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnHotKeyChange_Click( object sender, EventArgs e )
 {
     this._otherWindowOpen = true;
     var ksf = new KeySetForm();
     ksf.ShowDialog();
     ksf.keyType = KeySetForm.KeyType.SINGLE;
     if( ksf.result == KeySetForm.Result.OK ) {
         CurrentSettingFile.hotKey = ksf.KeyData[0];
         this.txtHotKey.Text = KeysToText( ksf.KeyData );
     }
     this._otherWindowOpen = false;
 }