صفحه 2 از 14 اولاول 123412 ... آخرآخر
نمایش نتایج 41 تا 80 از 531

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

  1. #41
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    Cool یافتن شماره سریال و مدل تمامی هارددیسکهای موجود در یک سیستم

    ابتدا System.Management رو به References پروژه بیفزایید و سپس :
    using System.Management;

    private void GetHDDSerialNumber()
    {
    ManagementObjectSearcher searcher;
    string query1 = "SELECT * FROM Win32_DiskDrive";
    string query2 = "SELECT * FROM Win32_PhysicalMedia";

    searcher = new ManagementObjectSearcher(query1);
    foreach (ManagementObject wmi_HD in searcher.Get())
    if (wmi_HD["Model"] != null)
    MessageBox.Show(wmi_HD["Model"].ToString());

    searcher = new ManagementObjectSearcher(query2);
    foreach (ManagementObject wmi_HD in searcher.Get())
    if (wmi_HD["SerialNumber"] != null)
    MessageBox.Show(wmi_HD["SerialNumber"].ToString());
    }

  2. 21 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  3. #42
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    تبدیل مقدار یک عبارت رشته ای به یک عدد صحیح

    int n = Convert.ToInt32(textBox1.Text);
    یا :
    int n = Int32.Parse(textBox1.Text);
    و چنانچه امکان خطا باشد که تقریبا همیشه هست :
    int n;
    Int32.TryParse(textBox1.Text, out n);
    در این حالت خروجی به n تخصیص داده میشود و چنانچه مشکلی رخ دهد n برابر صفر میشود.

  4. 14 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  5. #43
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    اجرا کردن یک فایل اجرایی با کدنویسی

    System.Diagnostics.Process.Start("mspaint.exe");

    چنانچه فایل اجرایی نیاز به آرگومان خط فرمان داشته باشد :
    System.Diagnostics.Process.Start("mspaint.exe", "c:\\Test.bmp");

    مثال بالا تصویر Test را در msPaint باز میکند.


  6. #44
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    Lightbulb ایجاد متن و رشته های چند سطری

    string myString1 = "This is the first line of my string.\n" +
    "This is the second line of my string.\n" +
    "This is the third line of the string.\n";
    یا :
    string myString2 = @"This is the first line of my string.
    This is the second line of my string.
    This is the third line of the string.";

  7. 12 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  8. #45
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    Lightbulb روشهای Initialize کردن انواع آرایه ها

    // Single-dimensional array (numbers).
    int[] n1 = new int[4] {2, 4, 6, 8};
    int[] n2 = new int[] {2, 4, 6, 8};
    int[] n3 = {2, 4, 6, 8};
    // Single-dimensional array (strings).
    string[] s1 = new string[3] {"John", "Paul", "Mary"};
    string[] s2 = new string[] {"John", "Paul", "Mary"};
    string[] s3 = {"John", "Paul", "Mary"};
    // Multidimensional array.
    int[,] n4 = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
    int[,] n5 = new int[,] { {1, 2}, {3, 4}, {5, 6} };
    int[,] n6 = { {1, 2}, {3, 4}, {5, 6} };
    // Jagged array.
    int[][] n7 = new int[2][] { new int[] {2,4,6}, new int[] {1,3,5,7,9} };
    int[][] n8 = new int[][] { new int[] {2,4,6}, new int[] {1,3,5,7,9} };
    int[][] n9 = { new int[] {2,4,6}, new int[] {1,3,5,7,9} };

  9. 17 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  10. #46
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    ایجاد تصاویر Bitmap در زمان اجرا

    private Image CreateBitmap()
    {
    System.Drawing.Bitmap flag = new System.Drawing.Bitmap(10, 10);
    for (int x = 0; x < flag.Height; ++x)
    for (int y = 0; y < flag.Width; ++y)
    flag.SetPixel(x, y, Color.White);
    for (int x = 0; x < flag.Height; ++x)
    flag.SetPixel(x, x, Color.Red);
    return flag;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    pictureBox1.Image = CreateBitmap();
    }

    منبع : http://msdn2.microsoft.com/en-us/library/aa287582(VS.71).aspx

  11. 10 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  12. #47
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    افزودن کنترل در زمان اجرا

    مثال: یک تکست باکس به فرم اضافه میکند:
    private void button1_Click(object sender, System.EventArgs e) 
    {
    TextBox myText = new TextBox();
    myText.Location = new Point(25,25);
    this.Controls.Add (myText);
    }


  13. #48
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    Lightbulb روش نصب MSDE همراه با برنامه

    توصیحات رو سر فرصت اضافه میکنم. فعلا :
    http://www.codeproject.com/KB/databa...Result=success

  14. 10 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  15. #49
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    یافتن MAC آدرس کارت شبکه

    ابتدا System.Management رو به References پروژه بیفزایید و سپس :
    using System.Management;

    private void GetMACAddress()
    {
    ManagementObjectSearcher searcher;
    string qry = "select * FROM Win32_NetworkAdapter";
    searcher = new ManagementObjectSearcher(qry);
    foreach (ManagementObject wmi_HD in searcher.Get())
    if (wmi_HD["MacAddress"] != null)
    MessageBox.Show(wmi_HD["MacAddress"].ToString());
    }

  16. 14 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  17. #50
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    Cool نمایش تصاویر در Windows picture and fax viewer از طریق کدنویسی

    //Open with the 'Windows picture and fax viewer':
    System.Diagnostics.Process.Start(@"C:\Windows\syst em32\rundll32.exe "
    , @"C:\Windows\system32\shimgvw.dll,ImageView_Fullsc reen " + filename);


    اینهم که آسونه اما شاید واسه دوستانی مفید باشه :
    //Open with the 'Microsoft Paint':
    System.Diagnostics.Process.Start(@"C:\Windows\syst em32\MSPaint.exe "
    , filename);

  18. 11 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  19. #51
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    وادار کردن لیست باکس به اسکرول تا یک آیتم مشخص

    مثال - برای آخرین آیتم :

    // Set the TopIndex property of the ListBox to ensure the
    // most recently added items are visible.
    listBox1.TopIndex = listBox1.Items.Count - 1;
    listBox1.SelectedIndex = listBox1.Items.Count - 1;

  20. 9 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  21. #52
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    جابجا کردن فرم با کلیک بر روی هر قسمت از آن - بدون استفاده از توابع API

    private bool dragging;
    private Point pointClicked;
    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
    if (e.Button == MouseButtons.Left)
    {
    // Turn drag mode on and store the point clicked.
    dragging = true;
    pointClicked = new Point(e.X, e.Y);
    }
    else
    {
    dragging = false;
    }
    }
    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
    if (dragging)
    {
    Point pointMoveTo;
    // Find the current mouse position in screen coordinates.
    pointMoveTo = this.PointToScreen(new Point(e.X, e.Y));
    // Compensate for the position the control was clicked.
    pointMoveTo.Offset(-pointClicked.X, -pointClicked.Y);
    // Move the form.
    this.Location = pointMoveTo;
    }
    }
    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
    dragging = false;
    }

  22. 12 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  23. #53
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    انتقال مقادیر خاصیت Text دو تکست باکس از طریق Drag & Drop

    private void textBox_DragDrop(object sender, DragEventArgs e)
    {
    TextBox txt = (TextBox)sender;
    txt.Text = (string)e.Data.GetData(DataFormats.Text);
    }

    private void textBox_DragEnter(object sender, DragEventArgs e)
    {
    if (e.Data.GetDataPresent(DataFormats.Text))
    {
    e.Effect = DragDropEffects.Copy;
    }
    else
    {
    e.Effect = DragDropEffects.None;
    }
    }

    private void textBox_MouseDown(object sender, MouseEventArgs e)
    {
    TextBox txt = (TextBox)sender;
    txt.SelectAll();
    txt.DoDragDrop(txt.Text, DragDropEffects.Copy);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
    textBox2.DragDrop += new DragEventHandler(this.textBox_DragDrop);
    textBox2.MouseDown += new MouseEventHandler(this.textBox_MouseDown);
    textBox2.DragEnter += new DragEventHandler(this.textBox_DragEnter);
    textBox1.DragDrop += new DragEventHandler(this.textBox_DragDrop);
    textBox1.MouseDown += new MouseEventHandler(this.textBox_MouseDown);
    textBox1.DragEnter += new DragEventHandler(this.textBox_DragEnter);
    textBox1.AllowDrop = textBox2.AllowDrop = true;
    }

  24. 12 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  25. #54
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    گرفتن و تسخیر کردن (Capture) تصویر صفحه نمایش

    private void button1_Click(object sender, EventArgs e)
    {
    this.BackgroundImage= CaptureScreen();
    }

    private Image CaptureScreen()
    {
    Bitmap screen = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
    Screen.PrimaryScreen.Bounds.Height);
    using (Graphics g = Graphics.FromImage(screen))
    {
    g.CopyFromScreen(0, 0, 0, 0, screen.Size);
    }
    return screen;
    }

  26. 12 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  27. #55
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    پخش کردن برخی اصوات و صداهای سیستمی تنها با یک خط!

    // Play a beep with default frequency
    // and duration (800 and 200, respectively)
    Console.Beep();

    // Play a beep with frequency as 200 and duration as 300
    Console.Beep(200, 300);

    و یا :
    SystemSounds.Asterisk.Play();

    SystemSounds.Hand.Play();

    SystemSounds.Exclamation.Play();

    SystemSounds.Beep.Play();

    SystemSounds.Question.Play();


  28. #56
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    نواختن یک فایل صوتی با فرمت Wave

    using System.Media;


    private void Form1_Load(object sender, EventArgs e)
    {
    SoundPlayer player = new SoundPlayer();
    string path = "C:\\windows\\media\\ding.wav";
    player.SoundLocation = path; //Set the path
    player.Play(); //play it
    }


    منبع : http://www.daniweb.com/code/snippet446.html

  29. 11 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  30. #57
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    بدست آوردن لیست چاپگرهای نصب شده در یک سیستم

    using System.Drawing.Printing;

    private void GetInstalledPrinters()
    {
    foreach (string printerName in PrinterSettings.InstalledPrinters)
    MessageBox.Show(printerName);
    }

  31. 10 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  32. #58
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    برخی اعمال متدوال روی تاریخ میلادی

    // Create a TimeSpan representing 2.5 days.
    TimeSpan timespan1 = new TimeSpan(2, 12, 0, 0);

    // Create a TimeSpan representing 4.5 days.
    TimeSpan timespan2 = new TimeSpan(4, 12, 0, 0);

    // Create a TimeSpan representing 1 week.
    TimeSpan oneWeek = timespan1 + timespan2;

    // Create a DateTime with the current date and time.
    DateTime now = DateTime.Now;

    // Create a DateTime representing 1 week ago.
    DateTime past = now - oneWeek;

    // Create a DateTime representing 1 week in the future.
    DateTime future = now + oneWeek;
    مثال :‌ پیدا کردن اختلاف تعداد روزهای بین دو تاریخ :
    DateTime dateFrom = DateTime.Parse("10/10/2007");
    DateTime dateTo = DateTime.Parse("11/12/2007");
    TimeSpan ts = dateTo - dateFrom;
    int days = ts.Days;
    و یا :
    DateTime dtFirst = new DateTime(2007, 10, 10);
    DateTime dtSecond = new DateTime(2007, 11, 12);
    TimeSpan diffResult = dtSecond.Subtract(dtFirst);


  33. #59
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    تغییر خواص یک فایل

    using System.IO;

    مخفی و فقط خواندنی کردن یک فایل :
    FileInfo file = new FileInfo(@"C:\test.txt");
    file.Attributes = file.Attributes | FileAttributes.ReadOnly | FileAttributes.Hidden;

    تغییر خاصیت (حذف حالت فقط خواندنی مثال قبل):
    file.Attributes = file.Attributes & ~FileAttributes.ReadOnly;

  34. 11 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  35. #60
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    محاسبه ی حجم کلی یک دایرکتوری

    using System.IO;

    public long CalculateDirectorySize(DirectoryInfo directory, bool includeSubdirectories)
    {
    long totalSize = 0;
    // Examine all contained files.
    FileInfo[] files = directory.GetFiles();
    foreach (FileInfo file in files)
    {
    totalSize += file.Length;
    }
    // Examine all contained directories.
    if (includeSubdirectories)
    {
    DirectoryInfo[] dirs = directory.GetDirectories();
    foreach (DirectoryInfo dir in dirs)
    {
    totalSize += CalculateDirectorySize(dir, true);
    }
    }
    return totalSize;
    }

    private void button1_Click(object sender, EventArgs e)
    {
    MessageBox.Show(CalculateDirectorySize(new DirectoryInfo( @"C:\WINDOWS\System32"), true).ToString());
    }

  36. 11 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  37. #61
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    خواندن و نوشتن فایلهای متنی

    using System.IO;

    private void CreateTextFile()
    {
    using (FileStream fs = new FileStream("C:\\test.txt", FileMode.Create))
    {
    using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8))
    {
    w.WriteLine(124.23M);
    w.WriteLine("Salaam!");
    w.WriteLine('!');
    }
    }
    }

    private string ReadFromTextFile()
    {
    StringBuilder sb = new StringBuilder();
    using (FileStream fs = new FileStream("C:\\test.txt", FileMode.Open))
    {
    using (StreamReader r = new StreamReader(fs, Encoding.UTF8))
    {
    sb.AppendLine(r.ReadLine());
    sb.AppendLine(r.ReadLine());
    sb.AppendLine(r.ReadLine());
    }
    }
    return sb.ToString();
    }

  38. 7 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  39. #62
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    اضافه و جدا کردن نام فایل از مسیر کامل

    string filename = @"..\..\myfile.txt";
    string fullPath = @"c:\Temp";
    string filename = Path.GetFileName(filename);
    string fullPath = Path.Combine(fullPath, filename);
    // (fullPath is now "c:\Temp\myfile.txt")

  40. 11 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  41. #63
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    ایجاد یک نام تصادفی برای فایل

    string randomFileName = System.IO.Path.GetRandomFileName();


    و برای ایجاد نام منحصر بفرد برای فایلهای موقت :
    string tfile = Path.GetTempFileName();

  42. 12 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  43. #64
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    باز کردن یک سایت توسط internet explorer


    System.Diagnostics.
    Process.Start("iexplore.exe", "www.barnamenevis.org");

    و برای مثال در فایرفاکس :
     System.Diagnostics.Process.Start("C:\Program Files\Mozilla Firefox\FireFox.exe", "www.barnamenevis.org");

  44. 16 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  45. #65
    کاربر تازه وارد
    تاریخ عضویت
    آبان 1386
    پست
    82
    تشکر کردن
    33
    320 بار تشکر شده در 29 پست

    تبدیل نوع enum به int


    public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
    int x = (int) Days.Mon;


  46. 8 کاربر از az_farzaneh به خاطر این مطلب مفید تشکر کرده اند:


  47. #66
    کاربر تازه وارد
    تاریخ عضویت
    آبان 1386
    پست
    82
    تشکر کردن
    33
    320 بار تشکر شده در 29 پست

    انتقال آیتمهای Enum به یک ListBox


    public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
    System.Type t = typeof(Days);
    foreach (string s in Enum.GetNames(t))
    {
    listBox1.Items.Add(s);
    }

  48. 7 کاربر از az_farzaneh به خاطر این مطلب مفید تشکر کرده اند:


  49. #67
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    Lightbulb معرفی میانبرهای متداول در کدنویسی

    عادت کردن به میانبرها میتواند سرعت کدنویسی شما را افزایش دهد :
    • CTRL+ALT+L: View Solution Explorer. I use Auto Hide for all of my tool windows to maximize screen real estate. Whenever I need to open the Solution Explorer, it’s just a shortcut away. Related shortcuts: CTRL+ALT+X (Toolbox), F4 (Properties), CTRL+ALT+O (Output), CTRL+\, E (Error List), CTRL+\, T (Task List).
    • F12: Go to definition of a variable, object, or function.
    • SHIFT+F12: Find all references of a function or variable.
    • F7: Toggle between Designer and Source views.
    • CTRL+PgDn: Toggle between Design and Source View in HTML editor.
    • F10: Debug - step over. Related debugging shortcuts: F11 (debug - step into), SHIFT-F11 (debug - step out), CTRL-F10 (debug - run to cursor). F9 (toggle breakpoint).
    • CTRL+D or CTRL+/: Find combo (see section on Find Combo below).
    • CTRL+M, O: Collapse to Definitions. This is usually the first thing I do when opening up a new class.
    • CTRL+K, CTRL+C: Comment block. CTRL+K, CTRL-U (uncomment selected block).
    • CTRL+-: Go back to the previous location in the navigation history.
    • ALT+B, B: Build Solution. Related shortcuts: ALT+B, U (build selected Project), ALT+B, R (rebuild Solution).
    • CTRL+ALT+Down Arrow: Show dropdown of currently open files. Type the first few letters of the file you want to select.
    • CTRL+K, CTRL+D: Format code.
    • CTRL+L: Delete entire line.
    • CTRL+G: Go to line number. This is useful when you are looking at an exception stack trace and want to go to the offending line number.
    • SHIFT+ALT+Enter: Toggle full screen mode. This is especially useful if you have a small monitor. Since I upgraded to dual 17" monitors, I no longer needed to use full screen mode.
    • CTRL+K, X: Insert "surrounds with" code snippet. See Snippets tip below.
    • CTRL+B, T: Toggle bookmark. Related: CTRL+B, N (next bookmark), CTRL+B, P (prev bookmark).

    منبع :‌ http://www.chinhdo.com/20070920/top-11-visual-studio-2005-ide-tips-and-tricks-to-make-you-a-more-productive-developer/


  50. #68
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    بدست آوردن لیست تمامی فرمهای باز در یک برنامه

    مثال :‌ تغییر رنگ پشت زمینه ی تمامی فرمهای باز در یک برنامه :
    foreach (Form frm in Application.OpenForms)
    frm.BackColor = Color.Fuchsia;

  51. 16 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  52. #69
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    restart کردن (بستن و مجددا اجرا کردن) برنامه

    private void button1_Click(object sender, EventArgs e)
    {
    Application.Restart();
    }

  53. 12 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  54. #70
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    ساده ترین راه برای جلوگیری از Not Respond شدن برنامه در حلقه های طولانی

    برنامه تمامی message های درون message queue فعلی (از قبیل رخدادها و ...) را پردازش میکند.
    Application.DoEvents();
    یک مثال ساده :
    محو شدن تدریجی یک فرم با تغییر دادن خاصیت Opacity

  55. 6 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  56. #71
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    فقط یک نمونه از برنامه بتواند اجرا شود (با استفاده از Process)

    using System.Diagnostics;
    این تغییرات را در کلاس مربوط به StartUp برنامه اعمال کنید :
    static class Program
    {
    [STAThread]
    static void Main()
    {
    if (IsPrevInstance())
    return;
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(fals e);
    Application.Run(new Form1());
    }

    private static bool IsPrevInstance()
    {
    string processName = Process.GetCurrentProcess().ProcessName;
    Process[] instances = Process.GetProcessesByName(processName);
    if (instances.Length > 1)
    return true;
    else
    return false;
    }
    }


  57. #72
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    پراپرتی های اتوماتیک (Automatic Properties) در دات نت 3.0

    به جای نوشتن :
    private string userName;
    public string UserName
    {
    get { return userName; }
    set { userName = value; }
    }
    میتوانید بنویسید :
    public string UserName { get; set; }
    پیشنهاد خود مایکروسافت هم استفاده از حالت دوم است چون اگر snippet مربوط به prop رو اجرا کنید میبینید که برای این حالت تغییر یافته است.

    چند نکته :
    1- در پشت پرده و بصورت اتوماتیک ساختاری همانند پراپرتیهای سنتی تشکیل میشود اما دسترسی به فیلد آن امکان پذیر نیست.
    2- اگر بخواهید یک پراپرتی فقط خواندنی یا فقط نوشتنی ایجاد کنید باید از همان روش سنتی استفاده کنید.
    3- این نوع پراپرتی فقط جهت encapsualte کردن یک فیلد به کار میره و چنانچه نیاز به نوشتن عملیات خاصی (مثل اعتبارسنجی و ...) داشته باشید؛ باید از همان نوع سنتی استفاده کنید.

  58. 7 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  59. #73
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    عدم نیاز به نوشتن انواع توابع سازنده (ctor) در دات نت فریمورک 3.0 به بعد

    فرض کنید کلاسی برای کاربران خود به این شکل تعریف کردید :
    public class User
    {
    public string Password { get; set; }
    public string UserName { get; set; }
    public DateTime LastLogon { get; set; }
    }
    حال در برنامه میتوانید به اشکال زیر آبجکت آن را مقدار دهی کنید :
    User u1 = new User { UserName="sinpin", Password="123", LastLogon=DateTime.Now };

    User u2 = new User { UserName = "sinpin", Password = "123" };

    User u3 = new User { UserName = "sinpin" };

    به همین منوال میتوانید برای هر کلاسی استفاده کنید. مثلا ساخت یک نمونه از Form2 با تغییر برخی مشخصات :
    new Form2 { Text = "Test", BackColor = Color.Red }.Show();

    new Form2 { StartPosition = FormStartPosition.CenterScreen }.Show();

  60. 8 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  61. #74
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    تعریف یک متغیر بدون تعیین کردن نوع آن در دات نت فریمورک 3.0 به بعد

    Implicit typed local variables

    با استفاده از کلمه کلیدی var :
    برای مثال نوشتن :
    var answer = 42;
    var s = "this is a string.";
    var names = new string[]{"Joe", "Bob", "Sam"};
    معادل است با :
    int answer = 42;
    string s = "this is a string.";
    string[] names = new string[]{"Joe", "Bob", "Sam"};
    پس از مقداردهی نوع متغیر مشخص خواهد شد.

    اینها درست هستند :
    var a = "See", b = "Spot", c = "run";
    string[] names = new string[]{"Jim", "Joe", "Bob"};
    var b = new[] {1, 2.0, 3.5, 4.75}; // double[]
    var a = new[] {1, 2, 3, 4, 5}; // int[]

    foreach (var name in names)
    {
    ...
    }
    اما اینها اشتباه هستند :
    var x = null;
    var a = 22, b = "Spot", c = 9.5;
    var c = new[] {1, "Name", 2, "Address");
    چند نکته :
    • بلافاصله بعد از تعریف، متغیر باید مقداردهی شود در غیر اینصورت خطای زمان کامپایل رخ میدهد.
    • عمل تعیین نوع تنها یکبار انجام شده و پس از آن قابل تغییر نیست.
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 12:23 عصر


  62. #75
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    شروع آشنایی با LINQ بصورت ساده

    مثال 1 -
    فرض کنیم کلاسی مانند زیر تعریف کردیم :
    public class User
    {
    public int Age { get; set; }
    public string UserName { get; set; }
    }
    حال در فرم خود بنویسید :
    User[] users = new User[] {
    new User{UserName="Ahmad", Age=20},
    new User{UserName="Maryam", Age=17},
    new User{UserName="Ali", Age=29},
    new User{UserName="Hooman", Age=33},
    new User{UserName="Sara", Age=22},
    };

    var mySelect = from user in users where user.Age > 20 && user.Age < 30 select user.UserName;

    foreach (string uname in mySelect)
    MessageBox.Show(uname);


    مثال 2 -
    List<string> words = new List<string> { 
    "Word1", "World", "Word2", "Word3", "World4" };
    var wordQuery = from word in words where word == "World" select new { word };
    foreach (var name in wordQuery)
    MessageBox.Show( "-> Hello " + name.word);


  63. #76
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    Initilize کردن کالکشنها در دات نت 3.0 به بالا

    میتونید کالکشنها رو در همان زمان تعریف مقداردهی نیز کنید.

    مثال 1-
    List<string> names = new List<string> {"Jim", "Joe", "Bob", "Sam"};
    مثال 2- با فرض داشتن کلاسی مانند:
    public class Person
    {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    }
    میتونیم بنویسیم :
    List<Person> people = new List<Person> {
    new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },
    new Person { FirstName = "Bill", LastName = "Gates", Age = 50 },
    new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 }
    };

  64. 8 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  65. #77
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    متودهای گسترش (Extension Methods)

    روشی برای تزریق یک متود تعریف شده به سایر کلاسها بدون دسترسی به سورس و کامپایل مجدد است.
    (البته این تزریق بصورت موقت و ظاهری است و در پشت پرده از طریق یک متود استاتیک اینکار انجام میشود.)

    مثال - میخواهیم متودی به کلاس string بیافزاییم که آخرین حرف یک رشته را برگرداند. یک کلاس استاتیک به شکل زیر تعریف میکنیم : (توجه : اسم کلاس اهمیتی ندارد)
    public static class MyExtensions
    {
    public static string GetLastCharacter(this System.String str)
    {
    return str.Substring(str.Length-1, 1);
    }
    }
    حال میتونیم این متد را در لیست متدهای یک string - مانند زیر - مشاهده کنیم :
    string temp = "Sinpin";
    MessageBox.Show( temp.GetLastCharacter());
    آخرین ویرایش به وسیله sinpin : یک شنبه 09 تیر 1387 در 09:44 صبح

  66. 10 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  67. #78
    VIP
    تاریخ عضویت
    مرداد 1383
    پست
    2,266
    تشکر کردن
    275
    5,689 بار تشکر شده در 755 پست

    روش ارسال ایمیل به چندین گیرنده

    using System.Net.Mail;
    class SendEmail
    {
    public static void SendMessage(string subject, string messageBody, string fromAddress, string toAddress, string ccAddress)
    {
    MailMessage message = new MailMessage();
    SmtpClient client = new SmtpClient();
    message.From = new MailAddress(fromAddress);

    // Allow multiple "To" addresses to be separated by a semi-colon
    if (toAddress.Trim().Length > 0)
    {
    foreach (string addr in toAddress.Split(';'))
    {
    message.To.Add(new MailAddress(addr));
    }
    }

    // Allow multiple "Cc" addresses to be separated by a semi-colon
    if (ccAddress.Trim().Length > 0)
    {
    foreach (string addr in ccAddress.Split(';'))
    {
    message.CC.Add(new MailAddress(addr));
    }
    }

    message.Subject = subject;
    message.Body = messageBody;
    client.Host = "YourMailServer";
    client.Send(message);
    }
    }

    منبع : http://code.msdn.microsoft.com/sendemail

  68. 10 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:


  69. #79
    VIP آواتار Mahdi.Kiani
    تاریخ عضویت
    فروردین 1387
    پست
    1,258
    تشکر کردن
    70
    4,662 بار تشکر شده در 492 پست

    نحوه Drag کردن عکس از یک pictureBox به یک pictureBox دیگه

    نمونه برنامه را می توانید در اخر همین پست دانلود کنید
    برای این عمل به یک رویداد (MouseMove) برای pictureBox منبع نیاز دارید و دو رویداد (DragDrop) و ( DragEnter) از pictureBox مقصد. که نحوه کد کردن آن ها به شکل زیر است

    private void picBoxSource_MouseMove(object sender, MouseEventArgs e)
    {
    if (e.Button == MouseButtons.Left & picBoxSource.Image != null)
    {

    picBoxSource.DoDragDrop(picBoxSource.Image, DragDropEffects.All);
    }
    }




    private void picBoxDest_DragEnter(object sender, DragEventArgs e)
    {
    if (e.Data.GetDataPresent(DataFormats.Bitmap))
    {
    e.Effect = DragDropEffects.Copy;
    }
    else
    e.Effect = DragDropEffects.None;
    }



    private void picBoxDest_DragDrop(object sender, DragEventArgs e)
    {
    if (e.Data.GetDataPresent(DataFormats.Bitmap))
    {
    picBoxDest.Image = (Image)e.Data.GetData(DataFormats.Bitmap);
    }
    }



    نکته : خاصیت AllowDrop مربوط به pictureBox مقصد را بایستی true کنید. دقت داشته باشید که این خاصیت، در پنجره خواص مربوط به pictureBox وجود نداره و باید اونو از طریق کد نویسی اعمال کنید.
    موفق باشید
    مهدی کیانی
    فایل های ضمیمه فایل های ضمیمه


  70. #80
    VIP آواتار Mahdi.Kiani
    تاریخ عضویت
    فروردین 1387
    پست
    1,258
    تشکر کردن
    70
    4,662 بار تشکر شده در 492 پست

    نحوه ایجاد فرم About بدون کد نویسی و طراحی فرم

    < نمونه برنامه را از آخر همین پست دریافت کنید >
    شما می توانید ، یک فرم About ("در باره برنامه" .. یا بعضا "در برباره ما ")، به پروژه خود اضافه کنید. بدون اینکه کد نویسی برای قسمت های مختلف آن انجام بدین.
    برای این کار روی نام سولوشن برنامه کلیک راست کنید، و از گزینه properties ،تب مربوط به Application را انتخاب کنید. (Default Tab)
    سپس روی گزینه Assembly Information کلیک کنید تا پنجره مربوط به Assembly Information باز شود.
    مانند شکل زیر





    پس از پر کردن فیلد ها با اطلاعات دلخواه شما، از منوی project و از گزینه Add New Item یک AboutBox به فرم خود اضافخ کنید. (به عنوان نمونه ABoutBox1)

    حال در هر کجا که می خواهید، کافی است کد زیر را بنویسید، تا فرم About نمایش داده شود.


    new AboutBox1().ShowDialog(this);


    مانند شکل زیر







    موفق باشید
    مهدی کیانی
    فایل های ضمیمه فایل های ضمیمه


صفحه 2 از 14 اولاول 123412 ... آخرآخر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •