private IEnumerable<string> ExpandEnvironmentVariables(Control control, string text) { Func<string, bool> predicate = null; int num = 0; int length = -1; for (int i = 0; i < text.Length; i++) { if (text[i] == '%') { length = i; num++; } } if ((num % 2) == 1) { string b = text.Substring(0, length); if (!string.Equals(this.LastEnvironemntVariablesSource, b, StringComparison.OrdinalIgnoreCase)) { this.LastEnvironemntVariablesSource = b; try { PreviewEnvironmentVariableEventArgs args = null; this.LastEnvironmentVariablesCollection = new List<string>(); foreach (string str2 in Environment.GetEnvironmentVariables().Keys) { PreviewEnvironmentVariableEventArgs e = args ?? (args = new PreviewEnvironmentVariableEventArgs(control)); e._Value = str2; e.Cancel = false; this.OnPreviewEnvironmentVariable(e); if (!e.Cancel) { this.LastEnvironmentVariablesCollection.Add(string.Concat(new object[] { b, '%', str2, '%' })); } } this.LastEnvironmentVariablesCollection.TrimExcess(); } catch { this.LastEnvironmentVariablesCollection = null; } } if (this.LastEnvironmentVariablesCollection != null) { if (predicate == null) { predicate = delegate (string x) { return x.StartsWith(text, StringComparison.OrdinalIgnoreCase); }; } return this.LastEnvironmentVariablesCollection.Where<string>(predicate); } } return new string[0]; }
protected virtual void OnPreviewEnvironmentVariable(PreviewEnvironmentVariableEventArgs e) { EventHandler<PreviewEnvironmentVariableEventArgs> handler = base.Events[EventPreviewEnvironmentVariable] as EventHandler<PreviewEnvironmentVariableEventArgs>; if (handler != null) { handler(this, e); } }
public static void PreviewEnvironmentVariable(object sender, PreviewEnvironmentVariableEventArgs e) { switch (e.Value) { case "curdir": case "curitempath": case "curitemname": case "curselname": case "curselpath": case "fardir": case "faritempath": case "faritemname": case "farselname": case "farselpath": case "user": e.Cancel = true; break; } }