public FrmEditEnvVar(string variableName, EnvironmentVariableTarget variableType) { InitializeComponent(); this.MinimumSize = new Size(327, 439); dgvValuesList.TabIndex = 0; LoadSettings(); txtVariableName.CausesValidation = false; dgvHandler = new DgvHandler(ref dgvValuesList); // set default icon dgvValuesList_UserAddedRow(null, null); this.txtVariableName.Text = variableName; // remember current name this.variableName = variableName; this.variableType = variableType; validator = new EnvVarValueValidator(); if (txtVariableName.Text.Length != 0) { // Check if we are editing variable LoadEnvironmentVariableValues(); } // Set form title this.Text = (txtVariableName.Text.Length != 0 ? "Edit" : "New") + " " + (this.variableType == EnvironmentVariableTarget.Machine ? "System" : "User") + " Variable"; #region Create DgvHandler Commands commandsList = new UndoRedoCommandList(); dgvHandler.SetCurrentCell(0); editVarNameCommand = new EditVarNameCommand(txtVariableName); #endregion DgvHandler Commands // disable buttons SetBtnState(); txtVariableName.CausesValidation = true; isVarNameChanged = false; // Open/Save File dialogs openFileDialog.Filter = FILE_FILTER; openFileDialog.DefaultExt = DEFAULT_FILTER_EXTENSION; saveFileDialog.Filter = FILE_FILTER; saveFileDialog.DefaultExt = DEFAULT_FILTER_EXTENSION; }
private void LocateInWindowsExplorer( ) { EnvVarValueValidator validator = new EnvVarValueValidator(); string varValue = string.Empty; foreach (DataGridViewRow row in dgvValuesList.SelectedRows) { if (row.Index != dgvValuesList.Rows.Count - 1) { DataGridViewCell cell = row.Cells[1]; varValue = (cell.Value.ToString().Contains("%")) ? cell.ToolTipText : cell.Value.ToString(); switch (validator.ValueType(varValue)) { case EnvironmentValueType.Folder: { // Open Folder in Windows Explorer LocateInWindowsExplorer(varValue); } break; case EnvironmentValueType.File: { // Select File in Windows Explorer LocateInWindowsExplorer("/select," + varValue); } break; case EnvironmentValueType.Error: { // Select existing folder in the path string parentDir = Path.GetDirectoryName(varValue); while (!Directory.Exists(parentDir)) { parentDir = Path.GetDirectoryName(parentDir); } // Open Folder in Explorer LocateInWindowsExplorer(parentDir); } break; default: // TODO: Remove for multiple rows MessageBox.Show("Nothing to locate in Windows Explorer", "Validation", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); break; } } } }
private void LoadEnvironmentVariables(DataGridView dgv, EnvironmentVariableTarget target) { EnvVarValueValidator validator = new EnvVarValueValidator(); int currentRowIndex = (dgv.CurrentRow != null ? dgv.CurrentRow.Index : 0); dgv.Rows.Clear(); int rowIndex = 0; IDictionary environmentVariables = variableManger.GetEnvVariables(target); foreach (DictionaryEntry de in environmentVariables) { string[] row = { de.Key.ToString(), de.Value.ToString() }; rowIndex = dgv.Rows.Add(row); // validate variable value and show row in red if invalid if (!validator.Validate(de.Value.ToString())) { dgv.Rows[rowIndex].Cells[0].Style.ForeColor = Color.Red; dgv.Rows[rowIndex].Cells[1].Style.ForeColor = Color.Red; } } dgv.Sort(dgv.Columns[0], ListSortDirection.Ascending); try { dgv.CurrentCell = dgv[0, currentRowIndex]; dgv.FirstDisplayedScrollingRowIndex = currentRowIndex; } catch { // if row was deleted this will set it to first one // TODO: Implement this by searching for var name in the grid. // Catching Exceptions makes program slow dgv.CurrentCell = dgv[0, 0]; dgv.FirstDisplayedScrollingRowIndex = 0; } }