صفحه 6 از 14 اولاول ... 45678 ... آخرآخر
نمایش نتایج 201 تا 240 از 533

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

  1. #201

    جلوگیری از رخ دادن Unhandled Exceptions

    در فایل program.cs مربوط به پروژه بعد از دستورات زیر

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(fals e);


    دستور زیر رو قرار بدید


    Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadExce ption);

    و در همون فایل program.cs متدی با همان نامی که در سازنده بالا دادید باید ایجاد کنید مثل متد زیر

    static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
    {
    MessageBox.Show("خطا در اجرای دستور کاربر", "خطا");
    }

    از این به بعد در صورتی که خطایی در قطعه کدی از برنامه رخ بده که درون بلوک try قرار نداشته باشه به این متد فرستاده می شه و دیگه پیام پیش فرض دات نت فریم ورک نمایش داده نمی شه.
    نکته : آرگومان e در متد فوق حاوی Exception ایجاد شده می باشد که از آن می توان استفاده های مختلفی کرد.

    -------------------------------------------------------
    نقل قول مستقیم از لینک زیر (ایجاد شده توسط رها)
    https://barnamenevis.org/showth...hreadException

  2. #202

    Cool بافر .: نشان دادن مقدار کپی شدن یه فایل :.

    با استفاده از بافر می توان روی مقدار کپی شدن یه فایل مدیریت کرد و مانور داد

    موارد مورد نیاز برای این مثال:

    1. یک Progress Bar
    2. یک Button

    این کد متد اصلی ما می باشد


    public void CopyFile(string FileSource, string FileDestination)
    {
    int NumRead;
    long FileLength;
    System.IO.FileStream From = new System.IO.FileStream(FileSource, System.IO.FileMode.Open);
    System.IO.FileStream To = new System.IO.FileStream(FileDestination, System.IO.FileMode.CreateNew);
    byte[] buffer = new byte[1024];
    FileLength = From.Length;
    progressBar1.Minimum = 0;
    progressBar1.Maximum = (int)FileLength;
    while (FileLength>0)
    {
    System.IO.BinaryReader Reader = new System.IO.BinaryReader(From);
    NumRead = Reader.Read(buffer, 0, 1024);
    FileLength = FileLength - NumRead;
    System.IO.BinaryWriter Writer = new System.IO.BinaryWriter(To);
    Writer.Write(buffer, 0, NumRead);
    progressBar1.Value = progressBar1.Value + NumRead;
    Writer.Flush();
    }
    From.Close();
    To.Close();
    if (progressBar1.Value>99)
    {
    progressBar1.Value = 0;
    MessageBox.Show("Copy Finished successfuly");
    }
    }


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


    private void button1_Click(object sender, EventArgs e)
    {
    openFileDialog1.ShowDialog();
    folderBrowserDialog1.ShowDialog();
    System.IO.FileInfo d=new System.IO.FileInfo(openFileDialog1.FileName.ToStri ng());
    CopyFile(openFileDialog1.FileName.ToString(), folderBrowserDialog1.SelectedPath.ToString()+"\\"+ d.Name.ToString());
    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 13:54 عصر

  3. #203

    Arrow بدست آوردن میزان عددی طول رشته ی درون یک TextBox

    Graphics txtGraphics = this.textBox1.CreateGraphics();
    float width = txtGraphics.MeasureString(textBox1.Text, textBox1.Font).Width;
    this.Text = width.ToString();
    txtGraphics.Dispose();


    پروژه مثال ضمیمه شده است.
    فایل های ضمیمه فایل های ضمیمه

  4. #204

    تبدیل یک 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();


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

  5. #205

    غیرفعال کردن دکمه 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);
    }
    منبع : http://www.daniweb.com/code/snippet453.html

  6. #206

    تغییر دادن رنگ متن در Console Application

    using System.Runtime.InteropServices;
    [DllImport("kernel32.dll")]
    public static extern bool SetConsoleTextAttribute(IntPtr hConsoleOutput, int wAttributes);
    [DllImport("kernel32.dll")]
    public static extern IntPtr GetStdHandle(uint nStdHandle);
    public static void Main(string[] args)
    {
    uint STD_OUTPUT_HANDLE = 0xfffffff5;
    IntPtr hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    // increase k for more color options
    for (int k = 1; k < 255; k++)
    {
    SetConsoleTextAttribute(hConsole, k);
    Console.WriteLine("{0:d3} I want to be nice today!", k);
    }
    // final setting
    SetConsoleTextAttribute(hConsole, 236);
    Console.WriteLine("Press Enter to exit ...");
    Console.Read(); // wait
    }
    منبع : http://www.daniweb.com/code/snippet134.html

  7. #207

    باز و بسته کردن درایو 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);


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

  8. #208

    خالی کردن سطل بازیافت ویندوز (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);
    }


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

  9. #209

    حالتهای مختلف نمایش تاریخ و زمان با کمک String Formatting

    static void Main(string[] args)
    {
    DateTime CurrTime = DateTime.Now;
    Console.WriteLine("DateTime display listing specifier and result:\n");
    Console.WriteLine("d = {0:d}", CurrTime);
    // Short date mm/dd/yyyy

    Console.WriteLine("D = {0:D}", CurrTime);
    // Long date day, month dd, yyyy

    Console.WriteLine("f = {0:f}", CurrTime);
    // Full date/short time day, month dd, yyyy hh:mm

    Console.WriteLine("F = {0:F}", CurrTime);
    // Full date/full time day, month dd, yyyy HH:mm:ss AM/PM

    Console.WriteLine("g = {0:g}", CurrTime);
    // Short date/short time mm/dd/yyyy HH:mm

    Console.WriteLine("G = {0:G}", CurrTime);
    // Short date/long time mm/dd/yyyy hh:mm:ss

    Console.WriteLine("M = {0:M}", CurrTime);
    // Month dd

    Console.WriteLine("R = {0:R}", CurrTime);
    // ddd Month yyyy hh:mm:ss GMT

    Console.WriteLine("s = {0:s}", CurrTime);
    // yyyy-mm-dd hh:mm:ss can be sorted!

    Console.WriteLine("t = {0:t}", CurrTime);
    // Short time hh:mm AM/PM

    Console.WriteLine("T = {0:T}", CurrTime);
    // Long time hh:mm:ss AM/PM

    Console.WriteLine("u = {0:u}", CurrTime);
    // yyyy-mm-dd hh:mm:ss universal/sortable

    Console.WriteLine("U = {0:U}", CurrTime);
    // day, month dd, yyyy hh:mm:ss AM/PM

    Console.WriteLine("Y = {0:Y}", CurrTime);
    // Month, yyyy

    Console.WriteLine();
    Console.WriteLine("DateTime.Month = " + CurrTime.Month);
    // number of month

    Console.WriteLine("DateTime.DayOfWeek = " + CurrTime.DayOfWeek);
    // full name of day

    Console.WriteLine("DateTime.TimeOfDay = " + CurrTime.TimeOfDay);
    Console.Read(); // wait
    }
    منبع : http://www.daniweb.com/code/snippet184.html
    یک لینک مفید دیگر : http://blog.stevex.net/index.php/str...ing-in-csharp/

  10. #210

    خوندن خط به خط یک رشته چند سطری

    using System.IO;


    string s = @"salam
    dooste
    man";
    using (StringReader sr = new StringReader(s))
    {
    while (sr.Peek() > 0)
    MessageBox.Show(sr.ReadLine());
    };

  11. #211
    کاربر دائمی آواتار dr_csharp
    تاریخ عضویت
    آبان 1386
    محل زندگی
    Tehran
    پست
    599

    اعمال محدودیت برای ذخیره فایل توسط کاربر

    مثلا یه برنامه داریم که به کاربر قابلیت ذخیره ی فایل میده !
    خوب بدلیل شرایط امنیتی بهتره دسترسی کاربر به درایو اصلی ویندوز محدود بشه !برای اینکار بصورت زیر عمل میکنیم :
    ابتدا NameSpace های زیر رو استفاده میکنیم :

    using System.Security.Permissions;
    using System.Security;
    using System.IO;

    حالا قبل از namespace اصلی برنامه :

    [assembly: FileIOPermissionAttribute(SecurityAction.RequestRe fuse, Write = "C:\\")]

    بدین صورت کاربر اجازه ی درج فایل در درایو C رو نداره .
    مثلا اگه تو رویداد Click یکی از Button ها دستور زیر نوشته شده باشه .. کاربر با خطای مواجه خواهد شد :


    StreamWriter sw;
    try
    {
    sw = File.CreateText("C:\\test.txt");
    sw.WriteLine("salam");
    }
    catch
    {
    MessageBox.Show("عدم دسترسی");
    }
    finally
    {
    sw.Close();
    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 13:55 عصر

  12. #212

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

    برای دانلود سورس کدهای مربوط به کتاب مورد نظر خود به لینکهای زیر مراجعه کنید :


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

  13. #213

    قرار دادن شورتکات یک برنامه بر روی Desktop و Start Menu

    ابتدا روی پروژه کلیک راست کرده، Add Reference و در Tab مربوط به COM مورد Windows Script Host Object Model را اضافه نمایید. سپس :

    using IWshRuntimeLibrary;
    public static void CreateShortcut(string destination)
    {
    WshShell wshShell = new WshShell();
    object destFolder = (object)destination;
    string fileName = Path.Combine(
    (string)wshShell.SpecialFolders.Item(ref destFolder),
    "Notepad.lnk"
    );
    IWshShortcut shortcut =
    (IWshShortcut)wshShell.CreateShortcut(fileName);
    shortcut.TargetPath = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolde r.System),
    "notepad.exe"
    );
    shortcut.WorkingDirectory =
    Environment.GetFolderPath(Environment.SpecialFolde r.Personal);
    shortcut.Description = "Notepad Text Editor";
    shortcut.Hotkey = "CTRL+ALT+N";
    // Configure Notepad to always start maximized.
    shortcut.WindowStyle = 3;
    // Configure the shortcut to display the first icon in Notepad.exe.
    shortcut.IconLocation = "notepad.exe, 0";
    shortcut.Save();
    }
    نحوه ی استفاده :
    CreateShortcut("Desktop");
    CreateShortcut("StartMenu");
    منبع : Visual C#‎ 2005 Recipes: A Problem-Solution Approach

    یک مثال دیگر : http://www.codeproject.com/KB/dotnet/shelllink.aspx

  14. #214

    بدست آوردن اطلاعاتی در مورد OS و CLR

    // OS and CLR version information.
    Console.WriteLine(Environment.NewLine);
    Console.WriteLine("OS PlatformID : " +
    Environment.OSVersion.Platform);
    Console.WriteLine("OS Major Version : " +
    Environment.OSVersion.Version.Major);
    Console.WriteLine("OS Minor Version : " +
    Environment.OSVersion.Version.Minor);
    Console.WriteLine("CLR Version : " + Environment.Version);

    منبع : Visual C#‎ 2005 Recipes: A Problem-Solution Approach

  15. #215

    بدست آوردن Handle و عنوان پنجره ی فعال جاری

    using System.Runtime.InteropServices;

    سپس تعریف :
    // Declare external functions.
    [DllImport("user32.dll")]
    private static extern IntPtr GetForegroundWindow();

    [DllImport("user32.dll")]
    private static extern int GetWindowText(IntPtr hWnd,
    StringBuilder text, int count);

    و نهایتا افزودن سه لیبل و یک تایمر (مثلا با نام tmrRefresh) به برنامه و فعال کردن رویداد Tick آن :
    private void tmrRefresh_Tick(object sender, EventArgs e)
    {
    int chars = 256;
    StringBuilder buff = new StringBuilder(chars);

    // Obtain the handle of the active window.
    IntPtr handle = GetForegroundWindow();

    // Update the controls.
    if (GetWindowText(handle, buff, chars) > 0)
    {
    lblCaption.Text = buff.ToString();
    lblHandle.Text = handle.ToString();
    if (handle == this.Handle)
    {
    lblCurrent.Text = "True";
    }
    else
    {
    lblCurrent.Text = "False";
    }
    }
    }


    منبع : Visual C#‎ 2005 Recipes: A Problem-Solution Approach

  16. #216

    بدست آوردن اطلاعاتی از نسخه ویندوز موجود بوسیله توابع API

    using System.Runtime.InteropServices;
    // Define the structure and specify the layout type as sequential.
    [StructLayout(LayoutKind.Sequential)]
    public class OSVersionInfo
    {
    public int dwOSVersionInfoSize;
    public int dwMajorVersion;
    public int dwMinorVersion;
    public int dwBuildNumber;
    public int dwPlatformId;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
    public String szCSDVersion;
    }
    [DllImport("kernel32.dll")]
    public static extern bool GetVersionEx([In, Out] OSVersionInfo osvi);

    static void Main(string[] args)
    {
    OSVersionInfo osvi = new OSVersionInfo();
    osvi.dwOSVersionInfoSize = Marshal.SizeOf(osvi);

    // Obtain the OS version info.
    GetVersionEx(osvi);

    // Display the version information.
    Console.WriteLine("Class size: " + osvi.dwOSVersionInfoSize);
    Console.WriteLine("Major Version: " + osvi.dwMajorVersion);
    Console.WriteLine("Minor Version: " + osvi.dwMinorVersion);
    Console.WriteLine("Build Number: " + osvi.dwBuildNumber);
    Console.WriteLine("Platform Id: " + osvi.dwPlatformId);
    Console.WriteLine("CSD Version: " + osvi.szCSDVersion);
    Console.WriteLine("Platform: " + Environment.OSVersion.Platform);
    Console.WriteLine("Version: " + Environment.OSVersion.Version);

    // Wait to continue.
    Console.WriteLine(Environment.NewLine);
    Console.WriteLine("Main method complete. Press Enter.");
    Console.ReadLine();
    }
    منبع : Visual C#‎ 2005 Recipes: A Problem-Solution Approach

  17. #217

    بدست آوردن Handle تمامی پنجره های موجود در سیستم

    using System.Runtime.InteropServices;


    // The signature for the callback method.
    public delegate bool CallBack(IntPtr hwnd, int lParam);

    [DllImport("user32.dll")]
    public static extern int EnumWindows(CallBack callback, int param);
    [DllImport("user32.dll")]
    public static extern int GetWindowText(IntPtr hWnd,
    StringBuilder lpString, int nMaxCount);

    static void Main(string[] args)
    {
    // Request that the operating system enumerate all windows,
    // and trigger your callback with the handle of each one.
    EnumWindows(DisplayWindowInfo, 0);
    Console.ReadLine();
    }

    // The method that will receive the callback. The second
    // parameter is not used, but is needed to match the
    // callback's signature.
    public static bool DisplayWindowInfo(IntPtr hWnd, int lParam)
    {
    int chars = 100;
    StringBuilder buf = new StringBuilder(chars);
    if (GetWindowText(hWnd, buf, chars) != 0)
    {
    Console.WriteLine(buf);
    }
    return true;
    }


    منبع : Visual C#‎ 2005 Recipes: A Problem-Solution Approach

  18. #218

    ساختن یک سند word و باز کردن آن در MSWord

    ابتدا روی پروژه کلیک راست کرده، Add Reference و اسمبلیهای زیر را را اضافه نمایید:
    • Microsoft.Office.Core
    • Microsoft.Vbe.Interop
    • Microsoft.Office.Interop.Word
    سپس :
    using Word = Microsoft.Office.Interop.Word;
    private static object n = Type.Missing;

    static void Main(string[] args)
    {
    // Start Word in the background.
    Word.ApplicationClass app = new Word.ApplicationClass();
    app.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;

    // Create a new document (this is not visible to the user).
    Word.Document doc = app.Documents.Add(ref n, ref n, ref n,
    ref n);

    // Add a heading and two lines of text.
    Word.Range range = doc.Paragraphs.Add(ref n).Range;
    range.InsertBefore("Test Document");
    string style = "Heading 1";
    object objStyle = style;
    range.set_Style(ref objStyle);

    range = doc.Paragraphs.Add(ref n).Range;
    range.InsertBefore("Line one.\nLine two.");
    range.Font.Bold = 1;

    // Show a print preview, and make Word visible.
    doc.PrintPreview();
    app.Visible = true;
    }
    منبع : Visual C#‎ 2005 Recipes: A Problem-Solution Approach

  19. #219

    بدست آوردن اطلاعاتی (مانند: سرعت، نوع و ...) از کانکشنهای شبکه ای موجود لوکال

    using System.Net.NetworkInformation;
    static void ShowConnectionInfo()
    {
    // Only proceed if there is a network available.
    if (NetworkInterface.GetIsNetworkAvailable())
    {
    // Get the set of all NetworkInterface objects for the local
    // machine.
    NetworkInterface[] interfaces =
    NetworkInterface.GetAllNetworkInterfaces();
    // Iterate through the interfaces and display information.
    foreach (NetworkInterface ni in interfaces)
    {
    // Report basic interface information.
    Console.WriteLine("Interface Name: {0}", ni.Name);
    Console.WriteLine(" Description: {0}", ni.Description);
    Console.WriteLine(" ID: {0}", ni.Id);
    Console.WriteLine(" Type: {0}", ni.NetworkInterfaceType);
    Console.WriteLine(" Speed: {0}", ni.Speed);
    Console.WriteLine(" Status: {0}", ni.OperationalStatus);

    // Report physical address.
    Console.WriteLine(" Physical Address: {0}",
    ni.GetPhysicalAddress().ToString());

    // Report network statistics for the interface.
    Console.WriteLine(" Bytes Sent: {0}",
    ni.GetIPv4Statistics().BytesSent);
    Console.WriteLine(" Bytes Received: {0}",
    ni.GetIPv4Statistics().BytesReceived);

    // Report IP configuration.
    Console.WriteLine(" IP Addresses:");
    foreach (UnicastIPAddressInformation addr
    in ni.GetIPProperties().UnicastAddresses)
    {
    Console.WriteLine(" - {0} (lease expires {1})",
    addr.Address, DateTime.Now +
    new TimeSpan(0, 0, (int)addr.DhcpLeaseLifetime));
    }

    Console.WriteLine(Environment.NewLine);
    }
    }
    else
    {
    Console.WriteLine("No network available.");
    }
    Console.ReadLine();
    }
    منبع : Visual C#‎ 2005 Recipes: A Problem-Solution Approach

  20. #220

    Lightbulb معرفی NDoc : ابزاری رایگان و کارآمد برای تولید مستندات

    NDoc یک ابزار رایگان و سورس باز است که توضیحات نوشته شده بشکل XML در متن برنامه را بصورت یک راهنمای یکپارچه از نوع chm و به چیزی شبیه به مستندات MSDN مایکروسافت تبدیل میکند.
    NDoc در حال حاضر تنها بر روی سیستم عامل ویندوز کار میکند و خروجی آن به یکی از دو شکل chm و html میتواند باشد.
    بصورت کلی : در میان ابزارهای شناخته شده برای مستندسازی سی شارپ؛ NDoc یکی از مناسبترین انتخابهاست.
    NDoc generates class library documentation from .NET assemblies and the XML documentation files generated by the C#‎ compiler (or with an add-on tool for VB.NET). NDoc uses pluggable documenters to generate documentation in several different formats, including the MSDN-style HTML Help format (.chm), the Visual Studio .NET Help format (HTML Help 2), and MSDN-online style web pages.
    یک نمونه ی آنلاین از خروجی NDoc
    توضیحات بیشتر در Wiki
    برخی از تصاویر برنامه
    دانلود و آشنایی با برنامه
    آشنایی با Documentation generator
    مقایسه بین انواع Documentation Generator ها

  21. #221

    Lightbulb معرفی CodeSmith : ابزاری جهت ساخت قالب و تولید کد

    CodeSmith is a software development tool to help you get your job done faster. Technically speaking it is a template driven code generator that automates the creation of common application code for any language (C#‎, Java, VB, PHP, ASP.NET, SQL, etc.).
    CodeSmith includes many useful templates as well as entire sets of templates for generating proven architectures (.netTiers, CSLA, NHibernate, PLINQO, Wilson's ORMapper, APOSA, and more). You can easily modify any templates or write your own to generate your code exactly the way you want it.
    CodeSmith یک ابزار تولید کد و قالب است که بسادگی کدهای بکار رفته در معماریها و روشهای شناخته شده پیاده سازی را برای برنامه شما تولید میکند.
    برای مثال : شما تنها کافیست که دیتابیس برنامه ی خود را در اختیار آن قرار دهید تا:
    تمامی کلاسها، رابطه ها و لایه ها را مطابق با الگو و معماری درخواستی تولید کند.
    (خود شما نیز میتوانید قالب و الگوی دلخواهتان را برای تولید کد در آن ایجاد کنید و در واقع خروجی آن را Customize کنید.)

    به کمک تلفیقی از قالبهای آماده ای چون netTiers در کنار CodeSmith شما قدرت و توانایی بسیار زیادی جهت پیاده سازی آسان معماریها و الگوهای معتبر پیدا میکنید.

    CodeSmith رایگان نیست. جهت مقایسه قیمت نسخه های مختلف آن میتوانید به این لینک مراجعه کنید.
    سایت اصلی CodeSmtih جهت دانلود نسخه آزمایشی
    دیدن تصاویری از برنامه
    آموزش تصویری ساخت یک Data Access Layer (مطابق با Microsoft’s Enterprise Library) در کمتر از 15 دقیقه

  22. #222

    Lightbulb معرفی netTiers : مجموعه ای بی نظیر و رایگان از قالبهای آماده جهت تولید کد

    netTiers مجموعه ای رایگان از قالبهای آماده و سورس باز جهت استفاده در ابزارهای تولید اتوماتیک کد مانند CodeSmith است. در این مجموعه تمامی معماریها و Pattern های معتبر و توصیه شده جهت تولید کد لحاظ شده اند.


    .netTiers is a set of open source code generation templates that simplify the tasks of creating customized Application Tiers for your Microsoft.Net applications in just a few minutes.

    .netTiers utilizes the power of the best code generation tool available today, CodeSmith Tools. .netTiers generated architecture is custom to your domain, uses familiar patterns, and follows the guidance of Microsoft's recommended patterns and practices. In fact, the .netTiers base architecture is built upon the Microsoft Enterprise Library Application Blocks. Oh right, .netTiers is FREE!
    دانلود مجموعه با حجم کمتر از 4 مگابایت
    آشنایی بیشتر
    تاریخچه تغییرات
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 17 تیر 1394 در 13:57 عصر

  23. #223

    عوض کردن تصویر پشت زمینه 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"));
    }
    منبع : http://blogs.msdn.com/coding4fun/arc...31/912569.aspx
    چند نمونه برنامه ی آماده :
    http://www.codeproject.com/KB/cs/wallpaperchanger.aspx
    http://www.codeproject.com/KB/applic...allpaperq.aspx

  24. #224

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

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


    [STAThread]
    static void Main()
    {
    string[] parts =
    Assembly.GetExecutingAssembly().Location.Split("\\ ".ToCharArray());
    string appName = parts[parts.Length - 1];
    string query = "select name from CIM_Process where name = '"
    + appName + "'";
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
    int runcount = 0;
    foreach (ManagementObject item in searcher.Get())
    {
    runcount++;
    if (runcount > 1) break;
    }
    if (runcount == 1)
    {
    Application.Run(new Form1());
    }
    else
    {
    System.Windows.Forms.MessageBox.Show("قبلا اجرا شده");
    Application.Exit();
    }
    }


    منبع : http://weblogs.asp.net/rchartier/arc...5/22/7410.aspx

  25. #225

    اعتبار سنجی آدرسهای ایمیل به کمک عبارات منظم

    using System.Text.RegularExpressions;


    public bool TestEmailRegex(string emailAddress)
    {
    string patternStrict = @"^(([^<>()[\]\\.,;:\s@\""]+"
    + @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@"
    + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
    + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+"
    + @"[a-zA-Z]{2,}))$";
    Regex reStrict = new Regex(patternStrict);
    bool isStrictMatch = reStrict.IsMatch(emailAddress);
    return isStrictMatch;
    }


    منبع : http://geekswithblogs.net/VROD/archi...16/109007.aspx

  26. #226

    تغییر زمان و تاریخ سیستم بوسیله کدنویسی

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


    منبع : http://www.codeguru.com/forum/archiv.../t-246724.html

  27. #227

    Lightbulb معرفی لینکهای مفید در ارتباط با API های ویندوز

    PInvoke.net is primarily a wiki, allowing developers to find, edit and add PInvoke* signatures, user-defined types, and any other information related to calling Win32 and other unmanaged APIs from managed code (written in languages such as C#‎ or VB.NET).



    _______________________________

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

  28. #228

    Lightbulb معرفی لینکهای مفید جهت آموزش سریع UML تنها با یک نگاه!


  29. #229

    Lightbulb معرفی GhostDoc : ابزاری رایگان برای تولید اتوماتیک XML Comments در کدنویسی

    یک Add-in رایگان برای محیط VS است که بصورت اتوماتیک توضیحاتی راجع به کدهای شما بصورت XML ایجاد میکند.
    استفاده از این ابزار در کنار NDoc که قبلا در همین تاپیک معرفی شد؛ بسیار مفید بوده و کار مستندسازی شما را بینهایت راحت میکند.

    <summary>
    GhostDoc is a free add-in for Visual Studio that automatically generates XML
    documentation comments for C#‎. Either by using existing documentation inherited
    from base classes or implemented interfaces, or by deducing comments from
    name and type of e.g. methods, properties or parameters.
    </summary>
    سایت اصلی محصول
    دانلود نسخه مختص ویژوال استادیو 2005
    دانلود نسخه مختص ویژوال استادیو 2008


    If you’re generating documentation for a property or method that uses a type in the .NET Framework, GhostDoc will use the documentation that Microsoft has already written for that type. Assuming you use Pascal casing or camel casing, GhostDoc can break apart the name into words and analyze those individual words to generate the documentation. All of the documentation logic is handled by GhostDoc’s generation rules. The built-in rules can be customized and new ones can be added. These rules can be exported for use on other machines as well.
    Except for the simplest members, you can’t rely on GhostDoc to write your XML comments for you completely. GhostDoc’s auto-generated comments are suggestions and should be reviewed by a developer. Regardless, GhostDoc serves as a good first stab at documentation and is a great time-saver.

  30. #230

    Lightbulb معرفی NET Reflector. : ابزاری رایگان جهت آنالیز و decompile کردن اسمبلیها

    توسط این برنامه کوچک و رایگان میتوانید فایل اجرایی و اسمبلیهای ایجاد شده توسط دات نت رو مورد بررسی قرار داده و آنها را به سورس اولیه برگردانید.
    از طریق این برنامه حتی میتوانید سورس کتابخانه های دات نت (برای مثال سورس کلاس ArrayList و ...) رو نیز مشاهده نمایید.



    Reflector is the class browser, explorer, analyzer and documentation viewer for .NET. Reflector allows to easily view, navigate, search, decompile and analyze .NET assemblies in C#‎, Visual Basic and IL.
    Reflector.zip - .NET Reflector, Version 5.1.0.0, Add-Ins
    دانلود برنامه و مشاهده سایت اصلی
    Add-in هایی مشابه جهت توسعه IDE
    و این هم Reflexil

  31. #231

    Lightbulb معرفی NHibernate : ابزاری رایگان و کارآمد جهت نگاشت مدل آبجکتیو به رابطه ای

    NHibernate ابزاری رایگان و سورس باز است که برای نگاشت بین OO و RD در دات نت استفاده میشود. (و یا بصورت خلاصه یک ORM)
    این ابزار مشابه آینه وار محصولی چون Hibernate است که دقیقا به همین منظور و برای جاوا کارها ایجاد شده است.

    NHibernate is an Object-relational mapping (ORM) solution for the Microsoft .NET platform: it provides an easy to use framework for mapping an object-oriented domain model to a traditional relational database. Its purpose is to relieve the developer from a significant amount of relational data persistence-related programming tasks.
    NHibernate is free as open source software that is distributed under the GNU Lesser General Public License.
    برخی از ویژگیها :
    NHibernate key features:
    • Natural programming model - NHibernate supports natural OO idiom; inheritance, polymorphism, composition and the .NET collections framework, including generic collections.
    • Native .NET - NHibernate API uses .NET conventions and idioms
    • Support for fine-grained object models - a rich variety of mappings for collections and dependent objects
    • No build-time bytecode enhancement - there's no extra code generation or bytecode processing steps in your build procedure
    • The query options - NHibernate addresses both sides of the problem; not only how to get objects into the database, but also how to get them out again
    • Custom SQL - specify the exact SQL that NHibernate should use to persist your objects. Stored procedures are supported on Microsoft SQL Server.
    • Support for "conversations" - NHibernate supports long-lived persistence contexts, detach/reattach of objects, and takes care of optimistic locking automatically
    • Free/open source - NHibernate is licensed under the LGPL (Lesser GNU Public License)
    سایت رسمی : www.nhibernate.orgدانلود برنامه
    مستندات و راهنما
    اطلاعات بیشتر

  32. #232

    Lightbulb معرفی NET Obfuscator. : ابزاری جهت محافظت از اسمبلیها

    obfuscation : در لغت به معنای تیره کردن و مبهم کردن است
    و NET Obfuscator. نیز ابزاری است غیر رایگان(!) که توسط آن میتوانید تا حدودی با پیچیده کردن کد IL اسمبلیهای تولیدی خود را در برابر ابزارهایی مانند Reflector ها و سایر برنامه های آنالیز کد محافظت نمایید.
    اساس کار اینگونه نرم افزارها عمدتا بر اساس تغییر نام (کلاسها، متودهاو ...) و اینکریپت کردن رشته های متنی است. (برای مثال و همانطور که میدانید رشته های متنی بصورت Clear Text در IL قرار میگیرند که این میتواند نقطه ضعفی بزرگ جهت نفوذ و ک.ر.ک برنامه ها لحاظ گردد.)

    برخی از ویژگیها :
    Leading .NET Code Security.NET Code Efficiency
    سایت رسمی برنامه : http://www.preemptive.com/products/d...tor/index.html
    سئوالاتی که مکررا پرسیده میشوند
    ویژگیهای برنامه
    دانلود نسخه آزمایشی

    هرچند که استفاده از ابزاری مانند Obfuscator کمی کد را پیچیده تر میکند و در واقع بهتر از هیچی است اما هیچگاه جهت دستیابی به امنیت تنها به آن تکیه نکنید. بهمین دلیل دیدن لینک زیر نیز ممکنه خالی از لطف نباشد :
    http://www.codeproject.com/KB/securi...fuscation.aspx

  33. #233

    دستیابی به تاریخ شمسی با استفاده از PersianCalender

    using System.Globalization;
    public string Miladi2Shamsi(DateTime _date)
    {
    PersianCalendar pc = new PersianCalendar();
    StringBuilder sb = new StringBuilder();
    sb.Append(pc.GetYear(_date).ToString("0000"));
    sb.Append("/");
    sb.Append(pc.GetMonth(_date).ToString("00"));
    sb.Append("/");
    sb.Append(pc.GetDayOfMonth(_date).ToString("00"));
    return sb.ToString();
    }
    نحوه ی استفاده، برای مثال تاریخ امروز :
    string today = Miladi2Shamsi(DateTime.Now);


    خروجی این تابع رشته ای در قالب "YYYY:MM:DD" مانند : "1386/12/25" خواهد بود.

  34. #234

    تبدیل رشته حاوی تاریخ شمسی به متناظر میلادی آن

    using System.Globalization;
    public DateTime Shamsi2Miladi(string _date)
    {
    int year = int.Parse(_date.Substring(0, 4));
    int month = int.Parse(_date.Substring(5, 2));
    int day = int.Parse(_date.Substring(8, 2));
    PersianCalendar p = new PersianCalendar();
    DateTime date = p.ToDateTime(year, month, day, 0, 0, 0, 0);
    return date;
    }
    ورودی این تابع رشته ای در قالب "YYYY:MM:DD" ؛ مانند : "1386/12/25" و یا "0087/01/01" باید باشد.

  35. #235

    یک کلاس ژنریک برای سریالایز و دیسریالایز کردن به شکل 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;
    }
    }

  36. #236

    Arrow آشنایی با 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();
    }
    مثال بالا + مقایسه آن با حالت بدون استفاده از BackgroundWorker ضمیمه شده است.

    یک لینک مفید جهت مطالعه ی بیشتر
    فایل های ضمیمه فایل های ضمیمه

  37. #237

    abstract class یا کلاس مجرد چیست؟

    abstract class ,کلاس غیر قطعی و ناتمامی است که در سطح فرزندانش باید پیاده سازی آن تکمیل گردد.
    ویژگیهای abstract class :
    • در اعلان کلاس abstract از کلمه کلیدی abstract قبل از class استفاده می کنیم.
    • اگر کلاسی تنها یک رفتار و یا خاصیت غیر قطعی داشته باشد آن کلاس تبدیل به یک کلاس مجرد و غیر قطعی میگردد.
    • abstract class ها non-instantiatable هستند.در واقع به علت ناتمام بودن پیاده سازیشان نمی توانیم از آنها instanceبسازیم.
    • abstract class ها حداقل یک یا بیشتر متود یا پروپرتی abstract دارند.abstract member ها بدون هیچگونه پیاده سازی فقط declare می شوند.abstract member ها قابل تعریف در کلاسی غیر از کلاس abstract نیستند.
    • کلاسهای فرزند abstract class باید تمامی abstract member ها را پیاده سازی کنند.
    • از کلمه کلیدی sealed در اعلان abstract class نمی توانیم استفاده کنیم .در واقع abstract class باید توسط فرزندانش به ارث رود.
    • متودهای مجرد و غیر قطعی که نیاز به overrid شدن دارند ,نیازی به کلمه کلیدی virtual ندارند .در واقع کلمه کلیدی virtual در کلمه abstract نهفته است.

  38. #238

    Method overloading چیست؟

    تعریف Method overloading : به امکان تعریف چندین متود با نام یکسان اما متفاوت درامضا( نوع و تعداد پارامترها )در یک کلاس گفته می شود .در واقع امکان داشتن ورژنهای مختلفی از یک متود درون یک کلاس.موارد زیر در Method overloading مطرح می باشند:
    • برای overload کردن یک متود باید متودهایی با signature های متمایز از یکدیگر ایجاد کنیم.signature هر متود شامل نوع , ترتیب و تعداد پارامترها می باشد.
    • return type یا مقدار برگشتی هر متود شامل signature متود نمی شود ,در #c مجاز نیستیم 2متود با signature یکسان امابا مقادیر برگشتی متفاوت داشته باشیم.
    مثال :
      public class MyMathClass
    {
    public int AddNum(int x)
    {
    return x + x;
    }
    public int AddNum(int x, int y)
    {
    return x + y;
    }
    public float AddNum(float x)
    {
    return x + x;
    }
    }

    منبع:سری های آموشی TestOut

  39. #239

    کالکشنهای معمولی در مقابل کالکشنهای ژنریک

    در این مقایسه سعی شده مطالب بصورت خلاصه و مفید مطرح بشه. جهت اطلاعات دقیقتر به مستندات دات نت فریمورک مراجعه نمایید.

    همانطور که میدونید ما دو مدل کالکشن داریم :
    1. کالکشنهای معمولی (مثل ArrayList)
    2. کالکشنهای ژنریک (مثل <>List)

    در مورد کالکشنهای ساده :
    چون توسعه دهندگان دات نت نمیدونستند که استفاده کنندگان قراره چه چیزی رو درون یک کالکشن بریزند (در واقع هرچیزی ممکنه : از یک نمونه person گرفته تا یک عدد یا رشته) اومدن و گفتن کالکشنهای ما آیتمهایی از نوع Object قبول میکنه در نتیجه برنامه نویسان بعدی میتونستند هرچیزی رو در آن نگهداری کنند. این داستان دو مشکل عمده دارد :
    1- Boxing و unBoxing : یعنی شما زمانی که یک آیتم را به لیست اضافه میکنید باید تبدیل به یک Object شه (boxing) و زمانی که اون رو از لیست میخونید باید اون رو به تایپ مورد نظر خودتون cast کنید(unboxing) که این موضوع پر هزینه ای است.
    2- Type safety وجود ندارد. یعنی شما هرچیزی رو میتونید درون یک arrayList بریزید بدون آنکه کامپایلر به شما هشدار دهد و گاه با یک اشتباه کوچیک برنامه شما در زمان اجرا crach میکند.
    ArrayList list = new ArrayList();
    list.Add(new Person());
    list.Add("new Person()"); // its ok at compile time!
    list.Add(new Person());


    و اما در
    کالکشنهای ژنریک (که با دات نت 2.0 آغاز شدند) شما در زمان کد نویسی مشخص میکنید که با چه تایپی میخواهید کار کنید. این موضوع دو حسن کلی دارد :
    1- عملیات boxing و unboxing حذف و لذا performace بیشتر میشود
    2- عملیات افزودن آیتم به لیست safe میشود چون اگر چیزی غیر از آنچه مشخص شده را درون لیست بریزید در کامپایل تایم به error برمیخورید.
    List<Person> persons = new List<Person>();
    persons.Add(new Person());
    persons.Add("new Person()"); // error in compile time
    persons.Add(new Person());

  40. #240

    Exclamation سفارشی کردن پیشفرض آیتمهای قابل اضافه شدن به یک کنترل در زمان طراحی

    عجب عنوان پیچیده و مبهمی شد ! (واقعا نمیشد راحتتر از این بیان کرد)

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

    مثال :
     using System.ComponentModel.Design;
    public override System.ComponentModel.Design.DesignerVerbCollectio n 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!");
    }
    If your component has common actions that are performed on it, it is often useful to expose these actions as a "verb" from the component. To see verbs in action, drop a TabControl on the VS .NET Windows Forms designer and you will see two hyperlinks show up in the property browser. One says "Add Tab" and one says "Remove Tab." As the names suggest, these actions will add or remove a tab from the TabControl. You will also see these verbs on the context menu if you right-click on the TabControl itself.


    منبع : http://msdn2.microsoft.com/en-us/library/ms973820.aspx

    سئوال و جوابهای مفید در این زمینه
    چند مثال :
    http://www.devarticles.com/c/a/C-Sha...port-Part-2/3/
    http://www.developerfusion.co.uk/show/4411/4/

صفحه 6 از 14 اولاول ... 45678 ... آخرآخر

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

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

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