برگزیده های پرشین تولز

نکته های مفید سی شارپ

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
سلام دوستان
در این تاپیک مهمترین و بهترین و پر کاربرترین دستورات و نکته های زبان برنامه نویسی #C قرار داده میشود
دوستان دیگر نیز میتوانند در پر ارزش کردن این تاپیک همکاری داشته باشند:)
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
بدست آوردن شماره سریال پراسسور (CPU Id)
ابتدا System.Management رو به References پروژه بیفزایید و سپس :

using System.Management;
public string GetCPUId()
{
string cpuInfo = String.Empty;
//create an instance of the Managemnet class with the
//Win32_Processor class
ManagementClass mgmt = new ManagementClass("Win32_Processor");
//create a ManagementObjectCollection to loop through
ManagementObjectCollection objCol = mgmt.GetInstances();
//start our loop for all processors found
foreach (ManagementObject obj in objCol)
{
if (cpuInfo == String.Empty)
{
// only return cpuInfo from first CPU
cpuInfo = obj.Properties["ProcessorId"].Value.ToString();
}
}
return cpuInfo;
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
DeSerialize کردن باینری آبجکت از فایل
PHP:
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
PHP:
public object DeSerializeObject(string filename)
{
    object o;
    Stream stream = File.Open(filename, FileMode.Open);
    BinaryFormatter bFormatter = new BinaryFormatter();
    o =
       (ObjectToSerialize)bFormatter.Deserialize(stream);
    stream.Close();
    return o;
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
بدست آوردن نام شرکت سازنده پراسسور (CPU Manufacturer)

ابتدا System.Management رو به References پروژه بیفزایید و سپس : using System.Management;
PHP:
public string GetCPUManufacturer()
{
    string cpuMan = String.Empty;
    //create an instance of the Managemnet class with the
    //Win32_Processor class
    ManagementClass mgmt = new ManagementClass("Win32_Processor");
    //create a ManagementObjectCollection to loop through
    ManagementObjectCollection objCol = mgmt.GetInstances();
    //start our loop for all processors found
    foreach (ManagementObject obj in objCol)
    {
        if (cpuMan == String.Empty)
        {
            // only return manufacturer from first CPU
            cpuMan = obj.Properties["Manufacturer"].Value.ToString();
        }
    }
    return cpuMan;
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
بدست آوردن میزان فضای خالی یک درایو (پارتیشن)
ابتدا System.Management رو به References پروژه بیفزایید و سپس : using System.Management;
PHP:
public double GetHDDFreeSpace(string drive)
{
    //check to see if the user provided a drive letter
    //if not default it to "C"
    if (drive == "" || drive == null)
    {
        drive = "C";
    }
    //create our ManagementObject, passing it the drive letter to the
    //DevideID using WQL
    ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
    //bind our management object
    disk.Get();
    //return the free space amount
    return Convert.ToDouble(disk["FreeSpace"]);
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
بدست آوردن حجم کلی یک درایو (پارتیشن)
PHP:
public double getHDDSize(string drive)
{
    //check to see if the user provided a drive letter
    //if not default it to "C"
    if (drive == "" || drive == null)
    {
        drive = "C";
    }
    //create our ManagementObject, passing it the drive letter to the
    //DevideID using WQL
    ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
    //bind our management object
    disk.Get();
    //return the HDD's initial size
    return Convert.ToDouble(disk["Size"]);
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
ساختن لیستی از کنترلها در زمان اجرا
PHP:
private void Form1_Load(object sender, EventArgs e)
{
    List<Button> buttons = new List<Button>();
    for (int i = 0; i < 10; i++)
    {
        Button btn = new Button();
        btn.Size = new Size(120, 22);
        btn.Text = string.Format("Button{0}", i);
        btn.Location = new Point(10, i * 25 + 10);
        buttons.Add(btn);                
    }
    this.Controls.AddRange(buttons.ToArray());            
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
اختصاص دادن رویداد به کنترلهای ساخته شده در runtime
PHP:
private void Form1_Load(object sender, EventArgs e)
{
    List<Button> buttons = new List<Button>();
    for (int i = 0; i < 10; i++)
    {
        Button btn = new Button();
        btn.Size = new Size(120, 22);
        btn.Text = string.Format("Button{0}", i);
        btn.Location = new Point(10, i * 25 + 10);
        btn.Click += new EventHandler(btn_Click);
        buttons.Add(btn);                
    }
    this.Controls.AddRange(buttons.ToArray());            
}
 
void btn_Click(object sender, EventArgs e)
{
    for (int i = 0 ; i < 10 ; i++)
    {
        Button btn = sender as Button;
        btn.Location = new Point(btn.Left + i, btn.Top);
        Application.DoEvents();
    }
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
نوشتن یک Event برای تعدادی کنترل و انجام کار مشابه بر روی انها
PHP:
private void textBox1_Enter(object sender, EventArgs e)
        {
           TextBox txtbx = sender as TextBox;
            txtbx.text.selectall();
        }
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
به دست آوردن مقدار یک Enum از عدد متناظر آن

public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
string s= Enum.GetName(typeof(Days),4);
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
افزودن یک زیرمنو و دستور دلخواه به context menu ویندوز اکسپلورر
PHP:
private void btnAddMenu_Click(object sender, System.EventArgs e)
{
    RegistryKey regmenu = null;
    RegistryKey regcmd = null;
    try
    {
        regmenu = Registry.ClassesRoot.CreateSubKey(MenuName);
        if(regmenu != null)
            regmenu.SetValue("",this.txtName.Text);
        regcmd = Registry.ClassesRoot.CreateSubKey(Command);
        if(regcmd != null)
                regcmd.SetValue("",this.txtPath.Text);
    }
    catch(Exception ex)
    {
        MessageBox.Show(this,ex.ToString());
    }
    finally       
    {
        if(regmenu != null)
            regmenu.Close();
        if(regcmd != null)
            regcmd.Close();
    }        
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
آغاز کار با کلاس Clipboard و دادن و گرفتن یک رشته متنی به/از آن
PHP:
//clear clipboard
Clipboard.Clear();

//Set Text to clipboard
if (!string.IsNullOrEmpty(textBox1.Text))
    Clipboard.SetText(textBox1.Text);

//Get text from clipboard
MessageBox.Show(Clipboard.GetText());
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
Hash کردن یک رشته متنی با الگوریتم MD5

PHP:
using System.Security.Cryptography;
PHP:
private string encryptString(string strToEncrypt)
{
    UTF8Encoding ue = new UTF8Encoding();
    byte[] bytes = ue.GetBytes(strToEncrypt);

    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
    byte[] hashBytes = md5.ComputeHash(bytes);

    // Bytes to string
    return System.Text.RegularExpressions.Regex.Replace
        (BitConverter.ToString(hashBytes), "-", "").ToLower();
}

یک مثال ساده از نحوه ی استفاده : MessageBox.Show(encryptString("Sinpin"));

خروجی e140088b10c4f19588ed3624e2b3c463
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
نحوه استفاده کاراکترهای خاص
می تونین با قرار دادن کد هگزای مربوط کاراکتر مورد نظر خود پس از "X\" آن کاراکتر را در هر متغیر رشته ای نشان دهید.

PHP:
 MessageBox.Show("\xA9 by persiancoder.com 2010-2011");
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
نحوه ی ایجاد و تخصیص ToolTip در زمان اجرا
PHP:
private void Form1_Load(object sender, EventArgs e)
{
    ToolTip toolTip = new ToolTip();
    toolTip.SetToolTip(button1, "persiancoder.com");
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
پخش فایلهای صوتی و ویدیویی با کمک winmm.dll

کد:
using System.Runtime.InteropServices;
کد:
string CommandString;
OpenFileDialog file = new OpenFileDialog();

[DllImport("winmm.dll")]
private static extern long mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, int hwndCallback);

private void button1_Click(object sender, System.EventArgs e)
{
    if (file.ShowDialog() == DialogResult.OK)
    {
        CommandString = "open " + "\"" + file.FileName + "\"" + " type MPEGVideo alias MediaFile";
        mciSendString(CommandString, null, 0, 0);
        CommandString = "play MediaFile";
        mciSendString(CommandString, null, 0, 0);
    }
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
چیست و چرا از آن استفاده می کنیم؟
یک property متشکل از 2 متود set,get است که برای دریافت و یا تخصیص مقادیر به متغیر ها استفاده می شوند .از معایب تعریف متغیرهای کلاس به صورت Public اینست که هر موجودی از بیرون کلاس می تواند دسترسی مستقیمی به آن داشته باشد و براحتی آن را دستکاری کند و در ضمن هیچ گونه عمل validation بر روی مقادیر متغیر ها صورت نمیگیرد ,که این با اصول صحیح oop منافات دارد .
دلایل استفاده از property به جای یک متغیر:
1-رعایت اصل encapsulation
2-امکان بازرسی و validation
کد:
public  class Circle
    {
        private double radius;
        public double Radius
        {
            get
            {
                return radius;
            }
            set 
            {
                if (value>0 && value<50)
                  radius = value; 
 
            }
        }
        public double  GetArea()
        {
            return radius * radius * 3.14;
        }
 
   }
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
گرفتن یک فایل از طریق دیالوگ OpenFileDialog و دستکاری نام فایل
PHP:
using System.IO;
کد:
OpenFileDialog openFile = new OpenFileDialog();
if (openFile.ShowDialog() != DialogResult.OK)
    return;

// get filename from OpenFileDialog
string fileName = openFile.FileName;

// get only filename without extension and path
string onlyname = Path.GetFileNameWithoutExtension(fileName);

// get extension of filename
string extension = Path.GetExtension(fileName);

// get directory of specific filename
string directory = Path.GetDirectoryName(fileName);

// change the extension of specific filename
string newFileName = Path.ChangeExtension(fileName, "bmp");

// get the root partition of specific file
string root = Path.GetPathRoot(fileName);
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
طریقه ی استفاده از کامپوننت NotifyIcon
کد:
private void Form1_Load(object sender, EventArgs e)
{
    NotifyIcon notify = new NotifyIcon();
    notify.Icon = this.Icon;
    notify.Visible = true;
    
    // duration of show baloon as milisecond
    int n = 3000;
    
    // show baloon
    notify.ShowBalloonTip(n, "Hi", "Salam Donya!", ToolTipIcon.Info);

    //set an event handler
    notify.MouseClick += new MouseEventHandler(notify_MouseClick);
}

void notify_MouseClick(object sender, MouseEventArgs e)
{
    MessageBox.Show("man click shodam!");
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
بدست آوردن نام کامپیوتر، نام کاربر جاری و ... (بوسیله کلاس Environment)
string pcName = Environment.MachineName;

string currentUser = Environment.UserName;

string system32 = Environment.SystemDirectory;

string osVersion = Environment.OSVersion;

string domain = Environment.UserDomainName;

int cpuCount = Environment.ProcessorCount;
 
بالا