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;
     }
 }