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

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

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
بدست آوردن قسمت صحیح یک عدد اعشاریdecimal d = 123.234M;
decimal i = Math.Truncate(d)
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
انتقال آیتمهای یک کالکشن به یک آرایه
PHP:
ArrayList list = new ArrayList();
list.Add(new Employee());
list.Add("farzaneh");
list.Add(1);
object[] array = new object[list.Count];
list.CopyTo(array, 0);
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
سوییچ کردن بین حالتهای مختلف یک ListView
کد:
private void button2_Click(object sender, EventArgs e)
{
    int n = (int) listView1.View;
    if (n == 4)
        n = -1;
    listView1.View = (View)Enum.ToObject(typeof(View), ++n);
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
معکوس کردن عملکرد دکمه های جهت نما روی یک TextBox
کد:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{    
    switch (e.KeyCode)
    {
        case Keys.Left:
            e.Handled = true;
            if (textBox1.SelectionStart <= textBox1.Text.Length - 1) 
                textBox1.SelectionStart++;
            break;
        case Keys.Right:
            e.Handled = true;
            if (textBox1.SelectionStart >= 1) 
                textBox1.SelectionStart--;
            break;
    } 
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
یک روش ساده برای افزودن تصویر به TextBox
کد:
private void Form1_Load(object sender, EventArgs e)
{
    PictureBox pic = new PictureBox();
    //pic.Image = Image.FromFile("آدرس فایل");
    pic.Image = SystemIcons.Information.ToBitmap();;
    textBox1.Controls.Add(pic);
}
 

>-->O

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

جایگزین کردن یک رشته درون متن یک textbox به روش اندیس دهی
با فشار دادن دکمه،زیررشته ی موجود در تکس باکس که از اندیس 12 شروع می شود با *** جایگزین می شود


کد:
privatevoid button1_Click(object sender, EventArgs e)
{
textbox1.SelectionStart = 0;
textbox1.SelectionLength = textbox1.Text.Length;
textbox1.Text=textbox1.SelectedText.Insert(12, "***");
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
بدست آوردن لیست IP های یک سیستم
کد:
using System.Net;

برای سیستم لوکال :

کد:
IPAddress[] ipList = Dns.GetHostAddresses(Dns.GetHostName());
foreach (IPAddress ip in ipList )
    MessageBox.Show(ip.ToString());
برای یک سیستم خاص با دانستن نام آن :
کد:
IPAddress[] ipList = Dns.GetHostAddresses("Sinpin");
foreach (IPAddress ip in ipList )
    MessageBox.Show(ip.ToString());
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
بدست آوردن لیست تمامی فونتهای نصب شده در سیستم
کد:
using System.Drawing.Text;


InstalledFontCollection fonts = new InstalledFontCollection();
foreach (FontFamily font in fonts.Families)
    listBox1.Items.Add(font.Name);
 

>-->O

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

کد:
richTextBox1.SelectionFont = new Font(richTextBox1.Font, 
    FontStyle.Bold | FontStyle.Underline);
richTextBox1.SelectionColor = Color.Red
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
رقراری ارتباط تلفنی (Dial up) توسط TAPI32
کد:
add Reference Microsoft.TAPI32

TAPI32Lib.RequestMakeCall rmc = new TAPI32Lib.RequestMakeCall ();
rmc.MakeCall("Home","09173.....","0","none");
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
تبدیل یک Enum به یک DataTable
با فرض داشتن یک enum مانند :
کد:
public enum UserNames
{
    Sinpin,
    Masoud,
    Behrouz,
    Omid,
    Ali
}

کد:
public DataTable ConvertEnumToDataTable()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("ID");
    dt.Columns.Add("Name");
    int i = 0;
    foreach (string s in Enum.GetNames(typeof(UserNames)))
    {
        DataRow dr = dt.NewRow();
        dr["ID"] = i;
        dr["Name"] = s;
        dt.Rows.Add(dr);
        i++;
    }
    return dt;
}

مثال از نحوه ی استفاده :
کد:
dataGridView1.DataSource = ConvertEnumToDataTable();
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
غیرفعال کردن دکمه Close یک فرم
کد:
using System.Runtime.InteropServices;

کد:
private const int SC_CLOSE = 0xF060;
private const int MF_GRAYED = 0x1;
[DllImport("user32.dll")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("user32.dll")]
private static extern int EnableMenuItem(IntPtr hMenu, int wIDEnableItem, int wEnable);

private void Form1_Load(object sender, System.EventArgs e)
{
    EnableMenuItem(GetSystemMenu(this.Handle, false), SC_CLOSE, MF_GRAYED);
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
باز و بسته کردن درایو CD-ROM
کد:
using System.Runtime.InteropServices;

کد:
[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi)]
protected static extern int mciSendString(string lpstrCommand,
StringBuilder lpstrReturnString,
int uReturnLength,
IntPtr hwndCallback);

باز کردن :
کد:
int ret = mciSendString("set cdaudio door open", null, 0, IntPtr.Zero);

بستن :
کد:
int ret = mciSendString("set cdaudio door closed", null, 0, IntPtr.Zero);
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
خالی کردن سطل بازیافت ویندوز (ResycleBin)
کد:
using System.Runtime.InteropServices;


کد:
enum RecycleFlags : uint
{
    SHERB_NOCONFIRMATION = 0x00000001,
    SHERB_NOPROGRESSUI = 0x00000001,
    SHERB_NOSOUND = 0x00000004
}

[DllImport("Shell32.dll", CharSet = CharSet.Unicode)]
static extern uint SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath,
RecycleFlags dwFlags);

private void button1_Click(object sender, EventArgs e)
{
    uint result = SHEmptyRecycleBin(IntPtr.Zero, null, 0);
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
عوض کردن تصویر پشت زمینه desktop با کدنویسی
کد:
using System.Runtime.InteropServices;
using System.Drawing;
using Microsoft.Win32;


کد:
public class Wallpaper
{
    const int SPI_SETDESKWALLPAPER = 20;
    const int SPIF_UPDATEINIFILE = 0x01;
    const int SPIF_SENDWININICHANGE = 0x02;

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    static extern int SystemParametersInfo(
        int uAction, int uParam, string lpvParam, int fuWinIni);

    public enum Style : int
    {
        Tiled, Centered, Stretched
    }

    public void SetWallpaper(string path, Style style)
    {
        RegistryKey key = Registry.CurrentUser.OpenSubKey(
            "Control Panel\\Desktop", true);
        switch( style )
        {
            case Style.Stretched :
                key.SetValue(@"WallpaperStyle", "2") ; 
                key.SetValue(@"TileWallpaper", "0") ;
                break;
            case Style.Centered :
                key.SetValue(@"WallpaperStyle", "1") ; 
                key.SetValue(@"TileWallpaper", "0") ; 
                break;
            case Style.Tiled :
                key.SetValue(@"WallpaperStyle", "1") ; 
                key.SetValue(@"TileWallpaper", "1") ;
                break;
        } 
        SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, 
            SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
    }
}
نحوه ی استفاده :
کد:
private void setButton_Click(object sender, EventArgs e)
{
    Wallpaper w = new Wallpaper();
    w.SetWallpaper(fileName, 
        (Wallpaper.Style)Enum.Parse(typeof(Wallpaper.Style), "Tiled"));
}
 

>-->O

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

کد:
using System.Runtime.InteropServices;

کد:
public struct SYSTEMTIME
{
    public short wYear;
    public short wMonth;
    public short wDayOfWeek;
    public short wDay;
    public short wHour;
    public short wMinute;
    public short wSecond;
    public short wMilliseconds;
}

[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool SetSystemTime([In] ref SYSTEMTIME st);

یک مثال از نحوه ی استفاده :
کد:
private void Form1_Load(object sender, EventArgs e)
{
    SYSTEMTIME st = new SYSTEMTIME();
    st.wYear = 2003; // must be short
    st.wMonth = 5;
    st.wDay = 22;
    st.wHour = 0;
    st.wMinute = 0;
    st.wSecond = 0;
    SetSystemTime(ref st); // invoke this method.
}
 

>-->O

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

کد:
using System.IO;
using System.Xml.Serialization;


کد:
public class GenericSerialization<T> where T : new()
{
    public static bool Serialize(object _object, string _path)
    {
        XmlSerializer serializer = new XmlSerializer(typeof(T));
        FileStream fs = null;
        try
        {
            fs = new FileStream(_path, FileMode.Create);
            serializer.Serialize(fs, _object);
            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            fs.Close();
        }
    }

    public static T Deserialize(string _path) 
    {
        T result;
        XmlSerializer serializer = new XmlSerializer(typeof(T));
        FileStream fs = new FileStream(_path, FileMode.OpenOrCreate);
        try
        {
            result = (T) serializer.Deserialize(fs);
        }
        catch
        {
            result = new T();
        }
        finally
        {
            fs.Close();
        }
        return result;
    } 
}
 

>-->O

همکار بازنشسته
تاریخ عضویت
25 نوامبر 2009
نوشته‌ها
2,530
لایک‌ها
468
محل سکونت
㋡ همین جا ㋡
آشنایی با BackgroundWorker و دستکاری عناصر UI
در مثال زیر به کمک یک BackgroundWorker میخواهیم یک ListBox را پر کنیم :
ابتدا یک BackgroundWorker بنام worker و یک button و listBox به فرم خود اضافه کنید.

کد:
delegate void MyDelegate(string s);

void worker_DoWork(object sender, DoWorkEventArgs e)
{
    MyDelegate md = new MyDelegate(AddItems);
    for (int i = 0; i < 10; i++)
    {
        this.Invoke(md, (object)("ASync" + i.ToString()));
        System.Threading.Thread.Sleep(500);
    }
}        

private void AddItems(string s)
{
    listBox1.Items.Add(s);
}

private void btnASync_Click(object sender, EventArgs e)
{
    listBox1.Items.Clear();
    worker.RunWorkerAsync();
}
 

>-->O

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


مثال :
فرض کنید که کنترل منو (MenuStrip) را کاملا سفارشی کرده اید. اما در زمان طراحی این کنترل همچنان آیتمهایی از نوع ToolStripMenuItem میگیرد؛ در حالیکه شما میخواهید آیتمهایی که در زمان طراحی به آن اضافه میشوند از نوع کلاس دیگری باشد که آن را نیز سفارشی کرده اید (فرضا MyToolStripMenuItem) برای انجام اینکار باید خاصیت verbs کلاس MyMenuStrip را override کنید.

مثال :
کد:
 using System.ComponentModel.Design;
public override System.ComponentModel.Design.DesignerVerbCollection Verbs
{
    get
    {
        DesignerVerbCollection v = new DesignerVerbCollection();
        v.Add(new DesignerVerb("Sample Verb", new EventHandler
        (SampleVerbHandler)));
        return v;
    }
}
private void SampleVerbHandler(object sender, System.EventArgs e)
{
    MessageBox.Show("You clicked the test designer verb!");
}
 

>-->O

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

کد:
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show(sender.ToString());
}



و

کد:
private void button1_Click(object sender, EventArgs e)
{
System.EventArgs arg = new System.EventArgs();
Form1_Load(button1.Text, arg);
}
 
بالا