Wednesday، January 18، 2012

کپی کردن یک دایرکتوری

کلاس DirectoryInfo عملکرد پایه‏ای برای دستیابی به یک دایرکتوری در فایل سیستم و دستکاری آن را فراهم میکند. برای جایجایی دایرکتوری متد MoveTo را دارد، اما برای کپی کردن آن خیر. کلاس Directory یک کلاس کمکی و یک واسط static را برای دستکاری و ایجاد دایرکتوریها در فایل سیستم است. برای جابجایی دایرکتوری متد Move را دارد، اما برای کپی کردن آن خیر. برای کپی کردن یک دایرکتوری به همراه فایلها و زیر دایرکتوریهای آن از متد زیر استفاده کنید.


1:
private static void DirectoryCopy(
   2:          string sourceDirName, string destDirName, bool copySubDirs)
   3:      {
   4:        DirectoryInfo dir = new DirectoryInfo(sourceDirName);
   5:        DirectoryInfo[] dirs = dir.GetDirectories();
   6:   
   7:        // If the source directory does not exist, throw an exception.
   8:          if (!dir.Exists)
   9:          {
  10:              throw new DirectoryNotFoundException(
  11:                  "Source directory does not exist or could not be found: "
  12:                  + sourceDirName);
  13:          }
  14:   
  15:          // If the destination directory does not exist, create it.
  16:          if (!Directory.Exists(destDirName))
  17:          {
  18:              Directory.CreateDirectory(destDirName);
  19:          }
  20:   
  21:   
  22:          // Get the file contents of the directory to copy.
  23:          FileInfo[] files = dir.GetFiles();
  24:   
  25:          foreach (FileInfo file in files)
  26:          {
  27:              // Create the path to the new copy of the file.
  28:              string temppath = Path.Combine(destDirName, file.Name);
  29:   
  30:              // Copy the file.
  31:              file.CopyTo(temppath, false);
  32:          }
  33:   
  34:          // If copySubDirs is true, copy the subdirectories.
  35:          if (copySubDirs)
  36:          {
  37:   
  38:              foreach (DirectoryInfo subdir in dirs)
  39:              {
  40:                  // Create the subdirectory.
  41:                  string temppath = Path.Combine(destDirName, subdir.Name);
  42:   
  43:                  // Copy the subdirectories.
  44:                  DirectoryCopy(subdir.FullName, temppath, copySubDirs);
  45:              }
  46:          }
  47:      }

Sunday، January 01، 2012

اصلاح یک فایل CSS

اگر از یک فایل CSS از پیش ساخته شده به عنوان الگو استفاده میکنید. ممکن هست یک سری مشکلات ایجاد شود. از جمله آدرس عکسهایی که در پوشه Images قرار دارند. برای مثال کد زیر در یک فایل CSS وجود دارد.
#header {
    background: url(images/header_bg.gif) repeat-x;
    position: relative;
    width: 688px;
    margin-bottom: 11px;
}


هیچ یک از تصاویر در محل مورد نظر قرار نمیگیرند. کد بالا را اینطور تغییر دهید.
#header {
    background: url('../Images/header_bg.gif') repeat-x;
    position: relative;
    width: 688px;
    margin-bottom: 11px;
}

اضافه کردن رویداد به یک UserControl

فرض کنید یک UserControl دارید که حاوی یک TextBox با خاصیت MultiLine باشد. حالا میخواهیم رویدادی داشته باشیم که تعداد Tab های زده شده در TextBox را بشمارد. میخواهیم از رویداد اینطور استفاده کنیم که هر وقت تعداد Tab ها دوتا شد یک پیغام صادر کنیم. به عبارتی هر دوتا Tab یک پیغام.
 
کدهای زیر را به کد دونی UserControl اضافه کنید!
 
 
   1:  int TabCount = 0;
   2:   bool TabTest = false;
   3:   
   4:   public delegate void TabEventHandler(bool TabCount);
   5:   public event TabEventHandler TabHandel;
   6:   
   7:   private void textBox1_KeyDown(object sender, KeyEventArgs e)
   8:  {
   9:        if (TabHandel != null)
  10:         {
  11:               if (TabCount < 2)
  12:               {
  13:                      if (e.KeyCode == Keys.Tab)
  14:                      {
  15:                          TabCount++;
  16:   
  17:                          if (TabCount == 2)
  18:                          {
  19:                              TabTest = true;
  20:                          }
  21:                      }
  22:                      if (TabTest)
  23:                      {
  24:                          TabHandel(TabTest);
  25:                          TabTest = false;
  26:                          TabCount = 0;
  27:                      }
  28:                      else
  29:                      {
  30:                          TabHandel(TabTest);
  31:                      }
  32:                  }
  33:              }
  34:          }


بعد از اینکه Solution را Rebuild کردید؛ رویداد بالا به UserControl اضافه میشه. در بخش Misc. و میشه از کد زیر برای استفاده از رویداد در فرم استفاده کرد.
 
   1:  private void userControl11_TabHandel(bool TabCount)
   2:  {
   3:          if (TabCount)
   4:          {
   5:                 MessageBox.Show("You pressed tab key two times");
   6:          }
   7:  }