صفحه 9 از 14 اولاول ... 7891011 ... آخرآخر
نمایش نتایج 321 تا 360 از 533

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

  1. #321
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    اصفهان-تهران
    پست
    212

    فشرده سازی پیام ها هنگام استفاده WebService ها

    آخرین ویرایش به وسیله mary3541 : دوشنبه 25 شهریور 1387 در 20:29 عصر دلیل: عنوان

  2. #322
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    http://hamdsoft.ir
    پست
    350

    نقل قول: 1001 نکته در سی شارپ

    عمل چک باکس مثل رادیو باتون

    privatevoid checkBox2_CheckedChanged(object sender, EventArgs e)
    {
    if (checkBox2.Checked)
    {
    checkBox1.Checked = false;
    //و بقیه
    }
    }
    privatevoid checkBox1_CheckedChanged(object sender, EventArgs e)
    {
    if (checkBox1.Checked)
    checkBox2.Checked = false;
    }
    }

  3. #323

    چينش تصادفي اعضاي يك ليست يا آرايه به كمك LINQ

    با فرض داشتن ليستي از اعداد مانند :
    private List<int> numbers = new List<int> { 2, 12, 4, 6, 11 };
    ميتوانيم بنويسيم :
    numbers = numbers.OrderBy(i => System.Guid.NewGuid()).ToList<int>();

  4. #324
    کاربر دائمی آواتار nathan
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    شهسوار
    پست
    202

    Post ايجادمحدوديت كاراكتري با حداقل كد

    براي ايجادمحدوديت درنوع پذيرش كاراكتر دريك TextBoxمي توان از دورويداد keypress و keydown به اين صورت استفاده كرد.
    به عنوان مثال فقط مي خواهيم اعدادپذيرفته شوند:
    تعريف يك متغيرboolean درسطح فرم:

    bool KeyHandle = false;


    رخداد keydown :

    private void Numeric_KeyDown(object sender, KeyEventArgs e)
    {
    if ((e.KeyCode == Keys.Back) || (e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9) || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9))
    KeyHandle = false;
    else
    KeyHandle = true;
    }


    حال دررخداد KeyPress براساس محتواي منطقي متغير رخدادراHandle مي كنيم:


    private void Numeric_KeyPress(object sender, KeyPressEventArgs e)
    {
    if (KeyHandle == true)
    {
    e.Handled = true;
    }
    }

    آخرین ویرایش به وسیله nathan : یک شنبه 05 آبان 1387 در 10:16 صبح

  5. #325
    کاربر دائمی آواتار piroozman
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    سن
    48
    پست
    217

    نقل قول: ايجادمحدوديت كاراكتري با حداقل كد

    نقل قول نوشته شده توسط nathan مشاهده تاپیک
    براي ايجادمحدوديت درنوع پذيرش كاراكتر دريك TextBoxمي توان از دورويداد keypress و keydown به اين صورت استفاده كرد.
    به منظور دریافت فقط کاراکتر عدد در کنترلهای ویرایشی می توانید از کد زیر استفاده کنید. با استفاده از این کد معیین می کنید که کنترل ویرایشی مورد نظر شما فقط عدد صحیح (غیر منفی) دریافت می کند یا مجوز درج و دریافت علامت ممیز (.) را نیز دارد یا خیر؟ برای اینکار یک کلاس استاتیک با نام Tools که سه مقدار استاتیک از (یک نوع String و دو نوع bool) ایجاد شده است.
                    
    static class Tools
    {
    // Boolean flag used to determine when a character other than a number is entered.
    private static bool nonNumberEntered = false;
    public static string text="0";
    public static bool isDecimalAllow=false;
    //تابع زیر نوع کاراکتر ارسال شده به تاکس باکهاسی مشخص شده توسط شما را تعیین می کند
    public static void DetermineTypeOfCharacter(object sender, KeyEventArgs e)
    {
    if (isDecimalAllow)
    goto decimalAllow;
    else goto decimalNotAllow;

    decimalAllow:
    if (text.Contains("."))
    {
    // Initialize the flag to false.
    nonNumberEntered = false;
    // Determine whether the keystroke is a number from the top of the keyboard.
    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
    {
    // Determine whether the keystroke is a number from the keypad.
    if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
    {
    // Determine whether the keystroke is a backspace.
    if (e.KeyCode != Keys.Back)
    {
    // A non-numerical keystroke was pressed.
    // Set the flag to true and evaluate in KeyPress event.
    nonNumberEntered = true;
    return;
    }
    }
    }
    }
    else
    {
    nonNumberEntered = false;
    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
    {
    if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
    {
    // Determine whether the keystroke is a backspace.
    if (e.KeyCode != Keys.Back)
    {
    //Determine whether the keystroke is a Decimal.
    if (e.KeyCode != Keys.Decimal)
    // A non-numerical keystroke was pressed.
    // Set the flag to true and evaluate in KeyPress event.
    nonNumberEntered = true;
    return;
    }
    }
    }
    }
    decimalNotAllow:
    nonNumberEntered = false;
    if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
    {
    if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
    {
    if (e.KeyCode != Keys.Back)
    {
    nonNumberEntered = true;
    return;
    }
    }
    }
    }
    //تابع زیر از ورود کاراکترهای غیر مجاز در داخل تکس باکسهای مورد نظر شما جلوگیری می کند
    public static void PreventCharacterEnter(object sender, KeyPressEventArgs e)
    {
    // Check for the flag being set in the KeyDown event.
    if (nonNumberEntered == true)
    {
    // Stop the character from being entered into the control since it is non-numerical.
    e.Handled = true;
    System.Media.SystemSounds.Beep.Play();

    }
    }
    در کد فوق دو تابع استاتیک DetermineTypeOfCharacter(object sender, KeyEventArgs e) و public static void PreventCharacterEnter(object sender, KeyPressEventArgs e) نیز وجود دارد. خوب فقط لازم است برای هر کنترل ویرایشی مانند TextBOx مقادیر مورد نظر خود را ست کرده(مقدار اساتیک Tools.text جهت ارسال تکس موجود در کنترل ویرایشی و تعیین مقدار true یا false برای مقدار استاتیک (Tools.isDecimalAllow و در رویداد keyDown کنترل مورد نظر خود تابع DetermineTypeOfCharacter(object sender, KeyEventArgs e) و در رویداد keyPress نیز تابع دوم یعنی public static void PreventCharacterEnter(object sender, KeyPressEventArgs e) را صدا بزنید. توجه داشته باشید که دو مقدار استاتیک text از نوع string و isDecimalAllow از نوع بولین را جهت مجوز دریافت علامت ممیز (.) یا عدم مجوز آن در رویداد keyDown (مشابه با کد زیر) ست کنید:


    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
    Tools.text = this.modifyNumberTextBox.Text;
    Tools.isDecimalAllow = false;
    Tools.DetermineTypeOfCharacter(sender, e);
    }

    private void modifyNumberTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
    Tools.PreventCharacterEnter(sender, e);
    }
    از مقدار nonNumberEntered که از نوع bool است جهت چک کردن مقدار معتبر استفاده می شود. در کد فوق از دو lable و دستور goto نیز استفاده شده است.
    ضمناً برای زیبایی کار در صورت عدم ورود کاراکتر صحیح در کنترل ویرایشی مورد نظر با استفاده از کد زیر در رویداد استاتیک public static void PreventCharacterEnter(object sender, KeyPressEventArgs e) صدای Beep هشدار لازم را به کاربر اعلام می کند:

    System.Media.SystemSounds.Beep.Play();

  6. #326

    افزدون قطعه کدی به ToolBox

    سلام
    VS این امکان رو به شما میده که کدی که از اون زیاد استفاده می کنید رو به ToolBox اضافه کنید تا در مواقع بعدی با یک دابل کلیک ساده بتونید ازش استفاده کنید .

    برای اینکار کافیه در پنجره کدنویسی ، قطعه کد مورد نظرتون رو انتخاب کرده و اون رو به Toolbox درگ کنید . همچنین با Right Click روی گزینه اضافه شده و انتخاب Rename Item می تونید نام قطعه کد مورد نظر رو تغییر بدید .

  7. #327

    نقل قول: 1001 نکته در سی شارپ

    مثالی ساده از LINQ ، که از یک آرایه اعداد زوج را انتخاب میکند :


    int[] a = { 2, 1, 3, 6, 5, 8 };
    var QResults = from n in a
    where n % 2 == 0
    select n;
    string s = "";
    foreach (var item in QResults)
    {
    s += item.ToString()+
    "\n";
    }
    MessageBox.Show(s);


    موفق و پیروز باشید !!!!

  8. #328
    کاربر دائمی آواتار danial82
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    iran_tehran
    پست
    531

    نقل قول: منابع، مراجع و مقالات مفید تالار

    سلام
    یه سری pdf درمورد :

    1- در مورد ساخت فرم های شفاف

    2- استفاده از فایلهای فلش در #C

    3- گرفتن Backup و Restore کردن دیتابیس

    4- پخش فایل های صوتی تصویری به وسیله Windows Media Player
    فایل های ضمیمه فایل های ضمیمه

  9. #329

    Lightbulb معرفي ابزارهايي براي مستندسازي كد و ديتابيس

    بهتر است هميشه پروژه‌هاي خود را مستند سازي كنيم تا زماني كه به دلايل مختلف نياز به تغيير يا استفاده مجدد آنها باشد بتوانيم به راحتي كدها و قسمتهاي مختلفي كه نوشته ايم را سريعا به ياد آوريم يا مرور كنيم. براي اينكار ابزارهاي بسيار زيادي وجود دارد اما برخي از آنها كاربردي و مفيدند. اين جدول كه در سايت WikiPedia وجود دارد مقايسه جالبي را بين اين برنامه ها و امكاناتي كه ارائه مي‌كنند نشان داده است.
    Comparison of documentation generators

    For Code

    Doxygen
    يكي از بهترين برنامه براي مستند سازي كد كه امكانات زيادي دارد، به فرمتهاي مختلفي خروجي مي‌دهد و بسياري از زبانها و سيستم‌عامل هاي مختلف را نيز پشتيباني مي‌كند.
    فرمتهاي خروجي HTML - CHM - RTF - PDF - LaTeX - PostScript - man pages - XML
    مستند سازي كد را به صورتي ساده تر انجام مي‌دهد. و ظاهري زيبا دارد.
    فرمتهاي خروجي: HTML - CHM - RTF - PDF - XML

    قابليت اضافه شدن در محيط VisualSyudio را نيز دارا مي‌باشد و مي‌توانيد در همان محيط به توليد مستندات بپردازيد
    فرمتهاي خروجي: HTML - CHM

    با پيروري از قواعدي ساده در Commentها مي‌توانيد تغييرات مستقيمي در مستندات داشته باشيد مثلا كدام كلمات عنوان يا زير عنوان باشد يا كدام توپر(Bold) چه قسمتهايي بالت دار باشند
    فرمتهاي خروجي: HTML - CHM

    مستنداتي مشابه MSDN توليد مي‌كند. و آنها را در MSDN سيستم اضافه مي‌كند.
    فرمتهاي خروجي: HTML - CHM - RTF - XML


    For DataBase
    اين برنامه ها با اتصال به سرور و ديتابيس مورد نظر كليه اطلاعات آنرا (به جز داده‌هاي جداول) اعم از جداول و مشخصات فيلدها، توابع، كاربران، قوانين تعيين شده و ... را مستند سازي كرده و به صورت مرتب و مجتمع تحويل مي‌دهد.

    DB Scribe
    اين برنامه اطلاعات مربوط به ديتابيس را مستندسازي مي‌كند.
    فرمتهاي خروجي: HTML - CHM - RTF

    BI Documenter
    اين برنامه اطلاعات مربوط به ديتابيس را مستندسازي مي‌كند. دياگرام‌هاي آنرا رسم مي‌كند. مستندات آن ظاهر زيباتري دارند
    فرمتهاي خروجي: HTML - CHM

    آن لحظه که تنها اعتبار کسی که مساله ای را مطرح کرده است، شما را در اشتباه بودن ایده هایتان قانع کرد،
    آن لحظه،
    لحظه وداع شما با دنیای خلاقیت و پیشرفت خواهد بود. . .

    برنولی

  10. #330
    کاربر دائمی آواتار Parham.D
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    شيراز
    پست
    413

    Post ايجاد فرم‏هاي غير مستطيلي

    يك روش استاندارد براي ايجاد فرم‏هاي غير مستطيلي (در اين مثال مثلثي شكل).
     


    private void btnClose_Click(object sender, EventArgs e)
    {
    this.Close();
    }

    private void frmMain_Load(object sender, EventArgs e)
    {
    System.Drawing.Drawing2D.GraphicsPath MyPaht = new System.Drawing.Drawing2D.GraphicsPath();

    MyPaht.AddPolygon(new Point[] { new Point(0, 0), new Point(0, this.Height), new Point(this.Width, 0) });

    Region MyRegion = new Region(MyPaht);

    this.Region = MyRegion;
    }




    عکس های ضمیمه عکس های ضمیمه

  11. #331
    کاربر دائمی آواتار Esmail Solhkhah
    تاریخ عضویت
    مهر 1385
    محل زندگی
    بورکینافاسو
    پست
    1,774

    Cool نقل قول: 1001 نکته در سی شارپ

    اگه از محیط سفید رنگ IDE خسته شدید
    این دوتا فایل رو استفاده کنید
    جهت استفاده تو IDE
    Tools-> Import and Export Settings
    فایل های ضمیمه فایل های ضمیمه

  12. #332

    نقل قول: 1001 نکته در سی شارپ

    نحوه ساخت setup برای پروژه با نصب SqlServer و دات نت

    https://barnamenevis.org/showthread.php?t=139529

  13. #333

    کپی آیتم های یک کامبو باکس به دیگری بدون استفاده از حلقه و در یک خط

    comboBox2.Items.AddRange(comboBox1.Items.Cast<Obje  ct>().ToArray());
    ممکنه روشهای سرراست تری هم وجود داشته باشه

  14. #334
    کاربر دائمی آواتار nathan
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    شهسوار
    پست
    202

    نقل قول: 1001 نکته در سی شارپ

    استفاده ازديكشنري:

    Dictionary<datatype1, datatype2> name = newDictionary<datatype1, datatype2>();

    datatype1 : Key
    datatype2 :value
    بااستفاده ازديكشنري مي توانيد آرايه اي ازمطالب به هم وابسته راكه به هرركورديك كليدتخصيص مي دهيددريك مجموعه جمع كنيد.

  15. #335
    کاربر دائمی آواتار danial82
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    iran_tehran
    پست
    531

    نقل قول: منابع، مراجع و مقالات مفید تالار

    ارث بری در بین فرم ها
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله danial82 : چهارشنبه 25 دی 1387 در 17:29 عصر

  16. #336
    کاربر دائمی آواتار newgoldenman
    تاریخ عضویت
    آبان 1385
    محل زندگی
    همشهري حضرت معصومه (س)
    پست
    367

    محاسبه ي فاصله بين دو زمان مشخص

    انجام اين كار خيلي ساده هست. از كلاس TimeSpan استفاده ميكنيم.
    به مثال زير توجه كنيد:
    دو تا شي ء از نوع DateTime ميسازم، با تاريخ و ساعت دقيق:
    DateTime myStartTime=new DateTime(2009,1,1,12,13,14,157);
    DateTime myEndTime=new DateTime(2010,9,12,13,14,15,165);

    حالا يك شي ء از نوع TimeSpan ميسازم و اونو اينطوري مقدار دهي ميكنم:
    TimeSpan myDifference=myEndTime-myStartTime;


    الان داخل myDifference فاصله ي زماني ميان دو زمان مد نظرمون قرار داره. كافيه تا براي دسترسي به محتواي اون، از خصوصيات خودش استفاده كنيم.
    مثلاً داريم:

    int totalDays=myDifference.Days ; //تعداد روزهاي ميان دو تاريخ مذبور
    int totalHours=myDifference.Hours; //تعداد ساعات ميان دو تاريخ مذبور
    int totalMinutes=myDifference.Minutes; //تعداد دقيقه هاي ميان دو تاريخ مذبور
    int totalSeconds=myDifference.Seconds; //تعداد ثانيه هاي ميان دو تاريخ مذبور
    int totalMilliSeconds=myDifference.MilliSeconds; //تعداد ميلي ثانيه هاي ميان دو تاريخ مذبور


    كلاس TimeSpan متدهاي مفيد ديگه اي هم داره.

    موفق باشيد.
    (با تشكر از danial82 عزيز كه متذكر شدند دوست عزيزمون sinpin قبلاً اين كلاس رو معرفي كرده بودند. از sinpin عزيز هم ممنونم.)
    آخرین ویرایش به وسیله newgoldenman : شنبه 28 دی 1387 در 02:25 صبح

  17. #337
    کاربر دائمی آواتار newgoldenman
    تاریخ عضویت
    آبان 1385
    محل زندگی
    همشهري حضرت معصومه (س)
    پست
    367

    Arrow Register A Global HotKey

    با استفاده از اين روش بسيار ساده و عالي، بدون هيچ زحمت و توابع پيچيده و API هاي ... و بدون هيچ نيازي به Hook كردن صفحه كليد و ... براي برنامتون يك كليد ميانبر تعريف كنيد كه هر موقع و هر جاي ويندوز كه اون كليد فشار داده شد، براتون يك كاري انجام بده.

    اين كار خيلي ساده هست:
    1: يك پروژه ي ساده ي Windows Application ايجاد كنيد.
    2: كلاس Form1 رو بدين ترتيب تغيير بديد:

    public partial class Form1 : Form
    {
    const int HOTKEY_ID = 31197; //any number to be used as an id within this app
    const int WM_HOTKEY = 0x0312;

    public enum KeyModifiers //enum to call 3rd parameter of RegisterHotKey easily
    {
    None = 0,
    Alt = 1,
    Control = 2,
    Shift = 4,
    Windows = 8
    }
    //API Imports
    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool RegisterHotKey(
    IntPtr hWnd, // handle to window
    int id, // hot key identifier
    KeyModifiers fsModifiers, // key-modifier options
    Keys vk // virtual-key code
    );

    [DllImport("user32.dll", SetLastError = true)]
    public static extern bool UnregisterHotKey(
    IntPtr hWnd, // handle to window
    int id // hot key identifier
    );

    protected override void WndProc(ref Message msg)
    {
    // Listen for operating system messages.
    switch (msg.Msg)
    {
    case WM_HOTKEY:
    // this is the block the app turns in if the hotkey has been pressed
    //so do your f@cking hotkey stuff here :-D
    MessageBox.Show("F11 Pressed!");
    break;
    }
    base.WndProc(ref msg);
    }
    //globalKeyboardHook myHookKeyBoard = new globalKeyboardHook();
    public Form1()
    {
    InitializeComponent();
    bool bcheck = RegisterHotKey(Handle, HOTKEY_ID, KeyModifiers.None, Keys.F11);

    }
    }


    خيلي كارها ميشه باز براي راحت تر شدن استفاده از اين روش انجام داد. مثلاً اينكه بصورت يك DLL درش بياريم، يا توي يك كلاس بنويسيم و .....

    اين هم تاپيك سوالم كه در نهايت به اين روش آگاهي يافتم:
    https://barnamenevis.org/showth...d=1#post668015

    اميدوارم كه مطلب مفيدي بوده باشه براتون.
    موفق باشيد.

  18. #338
    کاربر دائمی آواتار seniamail
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    کره خاکی
    پست
    224

    کپی آیتم های یک کامبو باکس به دیگری

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


    BindingSource bs = new BindingSource(comboBox1, "Items");
    comboBox2.DataSource = bs;

  19. #339
    کاربر دائمی آواتار danial82
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    iran_tehran
    پست
    531

    نقل قول: منابع، مراجع و مقالات مفید تالار

    Using Settings in C#‎
    فایل های ضمیمه فایل های ضمیمه

  20. #340

  21. #341

    Smile پیدا کردن معکوس یک رشته بصورت بازگشتی

    سلام ، دوستان تابعی که در زیر نوشتم معکوس (مقلوب) یک رشته را می یابد ،

    کد مورد نظر :


    void str_rev(string str,ref string res)
    {
    //finds reverse of string str and put result in res

    if(str.Length == 1)
    {
    res += str;
    }
    else
    {
    res += str[str.Length - 1].ToString();
    str_rev(str.Substring(0, str.Length - 1),ref res);
    }
    }

    نحوه استفاده :


    private void button1_Click(object sender, EventArgs e)
    {
    string res = "";
    str_rev("SALAR", ref res);
    MessageBox.Show(res);
    }


    امیدوارم مفید بوده باشد !!!

  22. #342

    غیر فعال کردن یک رویداد در زمان اجرا

    به عنوان مثال میخواهیم بدون اینکه متد text changed تحریک شود مقدار text box را عوض کنیم و بعد متد را اجرا کنیم

    //remove eventhandler
    TextBox1.textchanged-=new EventHandler(TextBox1_textchanged);
    TextBox1.text="value";
    //add event handler
    TextBox1.textchanged+=new EventHandler(TextBox1_textchanged);
    آخرین ویرایش به وسیله sara62 : پنج شنبه 10 اردیبهشت 1388 در 18:19 عصر

  23. #343

    چطور میشه کاری کرد که نشه توی TextBox فارسی نوشت و کلید های سوئیچی alt+shift هم بی تاثیر باشه

    برای اینکه کلید های سوئیچی هیچ تاثیری نداشته باشن خصوصیت key preview فرم را با Trueمقدار دهی میکنیم و کد زیر رو برای خصوصیت key down فرم می نویسیم

    if(e.Alt && e.shift)
    }
    InputLanguage.currentInputLanguage=InputLanguage.F ormculture(system.Globalization.cultureInfo.Getcul tureInfo("fa"));
    آخرین ویرایش به وسیله sara62 : پنج شنبه 10 اردیبهشت 1388 در 18:18 عصر

  24. #344

  25. #345
    VIP آواتار Sajjad.Aghapour
    تاریخ عضویت
    مهر 1386
    محل زندگی
    اهل کاشانم .. روزگارم بد نیست
    پست
    1,265

    Covert Picture to Icon

    تبدیل عکس به آیکن.....

    Size size = new Size(32, 32);
    Bitmap bmp = new Bitmap(Image.FromFile(pathStr), size);
    Icon temp = Icon.FromHandle(bmp.GetHicon());


    FileStream newIcon = new FileStream("c:\\sa.ico", FileMode.Create);
    temp.Save(newIcon);

    newIcon.Close();
    Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."

  26. #346

    تغییر زبان فرم های ویندوزی از فارسی به انگلیسی و از انگلیسی به فارسی

    private void func_SetLanguagePersian()
    {
    System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("fa-IR");
    InputLanguage MyL;
    string BackL;
    MyL = InputLanguage.CurrentInputLanguage;
    MyCulture = MyL.Culture;
    BackL = MyCulture.Name;
    MyCulture = new System.Globalization.CultureInfo("fa-IR");
    InputLanguage.CurrentInputLanguage = System.Windows.Forms.InputLanguage.FromCulture(MyC ulture);
    }

    private void func_SetLanguageEnglish()
    {
    System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo("en");
    InputLanguage MyL;
    string BackL;
    MyL = InputLanguage.CurrentInputLanguage;
    MyCulture = MyL.Culture;
    BackL = MyCulture.Name;
    MyCulture = new System.Globalization.CultureInfo("en");
    InputLanguage.CurrentInputLanguage = System.Windows.Forms.InputLanguage.FromCulture(MyC ulture);
    }

  27. #347

    چک کردن ورودی کاربر برای مقادیر عددی

    یکی از روش های گرفتن مقادیر عددی برای ورودی استفاده از MaskedTextBox هست. روش دیگه استفاده از متد TryParse هست. این تابع دو پارامتر برای ورودی مگیره، یکی رشته ای که باید تبدیل بشه و دیگری متغییری که عدد تبدیل شده باید داخلش ذخیره بشه. این تابع مقداری از نوع bool بر میگردونه.
    Console.Write("Enter a number for check: ");
    int i = 0;
    string inputNumber = Console.ReadLine();
    if (int.TryParse(inputNumber, out i))
    {
    Console.WriteLine("Valid format");
    }
    else
    {
    Console.WriteLine("Not valid format");
    }
    Console.ReadKey()

  28. #348

    نمایش قرمز رنگ عبارت مورد جستجو در RichTextBox

    توضیح: رنگ رو میتونید خودتون عوض کنید.
    int start = 0;
    int indexOfSearchText = 0;

    private void button1_Click(object sender, EventArgs e)
    {
    int startindex = 0;

    if (txtSearch.Text.Length > 0)
    startindex = FindMyText(txtSearch.Text.Trim(), start, rtb.Text.Length);

    if (startindex >= 0)
    {
    rtb.SelectionColor = Color.Red;

    int endindex = txtSearch.Text.Length;

    rtb.Select(startindex, endindex);

    start = startindex + endindex;
    }
    }

    private int FindMyText(string txtToSearch, int searchStart, int searchEnd)
    {

    if (searchStart > 0 && searchEnd > 0 && indexOfSearchText >= 0)
    {
    rtb.Undo();
    }


    int retVal = -1;


    if (searchStart >= 0 && indexOfSearchText >= 0)
    {

    if (searchEnd > searchStart || searchEnd == -1)
    {

    indexOfSearchText = rtb.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None);

    if (indexOfSearchText != -1)
    {

    retVal = indexOfSearchText;
    }
    }
    }
    return retVal;
    }

  29. #349

    تبديل اعداد به رشته

    public class NumberToString
    {
    private static string[] yakan = new string[10] { "صفر", "يک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه" };
    private static string[] dahgan = new string[10] { "", "", "بيست", "سي", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود" };
    private static string[] dahyek = new string[10] { "ده", "يازده", "دوازده", "سيزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده" };
    private static string[] sadgan = new string[10] { "", "يکصد", "دوصد", "سيصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد" };
    private static string[] basex = new string[5] { "", "هزار", "ميليون", "ميليارد", "تريليون" };


    private static string getnum3(int num3)
    {
    string s = "";
    int d3, d12;
    d12 = num3 % 100;
    d3 = num3 / 100;
    if (d3 != 0)
    s = sadgan[d3] + " و ";
    if ((d12 >= 10) && (d12 <= 19))
    {
    s = s + dahyek[d12 - 10];
    }
    else
    {
    int d2 = d12 / 10;
    if (d2 != 0)
    s = s + dahgan[d2] + " و ";
    int d1 = d12 % 10;
    if (d1 != 0)
    s = s + yakan[d1] + " و ";
    s = s.Substring(0, s.Length - 3);
    };
    return s;
    }

    public string num2str(string snum)
    {
    string stotal = "";
    if (snum == "0")
    {
    return yakan[0];
    }
    else
    {
    snum = snum.PadLeft(((snum.Length - 1) / 3 + 1) * 3, '0');
    int L = snum.Length / 3 - 1;
    for (int i = 0; i <= L; i++)
    {
    int b = int.Parse(snum.Substring(i * 3, 3));
    if (b != 0)
    stotal = stotal + getnum3(b) + " " + basex[L - i] + " و ";
    }
    stotal = stotal.Substring(0, stotal.Length - 3);
    }
    return stotal;
    }

    }
    آخرین ویرایش به وسیله sara62 : دوشنبه 01 تیر 1388 در 00:38 صبح

  30. #350
    کاربر دائمی آواتار Mohsen229266
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    سن
    36
    پست
    396

    نقل قول: 1001 نکته در سی شارپ

    TextChanged در DataGridView

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
    e.Control.TextChanged += MyDataGridTextChanged;
    }
    private void MyDataGridTextChanged(object sender, EventArgs e)
    {
    MessageBox.Show(((Control)sender).Text);
    }

  31. #351
    کاربر دائمی آواتار Mohsen229266
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    سن
    36
    پست
    396

    نقل قول: 1001 نکته در سی شارپ

    تابع IsNumeric در C#‎

    staticbool IsNumeric(object Expression)
    {
    bool isNum;
    double retNum;
    isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
    return isNum;
    }

    نحوه استفاده برای یک textBox

    bool
    IsNumber = IsNumeric(textBox1.Text);

  32. #352
    کاربر دائمی آواتار newgoldenman
    تاریخ عضویت
    آبان 1385
    محل زندگی
    همشهري حضرت معصومه (س)
    پست
    367

    تشخیص تداخل بین دو فیلد از نوع DateTime

    نقل قول نوشته شده توسط یكی از عزیزان برنامه نویس
    با سلام خدمت شما دوست عزیز
    دوست عزیز میخواستم اگر براتون امکان داره تابعی كه دوتاریخ رو با هم مقایسه میکنه رو بهم بدید من یک برنامه دارم که سرچ بین دو تاریخ و مقایسه آن برام مهمه.اگه براتون امکان داشت لطف کنید و تابع رو برام بفرستید

    با تشکر از شما دوست گرامی
    سلام...

    یه توضیح كوچیك راجع به صورت سوال میدم، سپس میپردازم به حل اون و ...

    صورت سوال:
    سلام
    ببخشید کسی میتونه راهنمایی کنه که چطوری توی C#‎ میتونم تداخل ساعت بگیرم ؟
    من دو فیلد دارم که ساعت شروع و پایان را در فرمی در C#‎ میدم و باید با ساعت های شروع و پایان دیگه ای که در پایگاه sql دارم در جدول قراره ملاقات چک بشه و اگر تداخلی وجود داشت آن را اعلام کنه .
    نمیدونم نوع فیلد رو باید از چه نوعی تعریف کنم timedate یا شایدم text ؟
    لطفاً اگه کسی می دونه راهنمایی کنه که چه کدی باید بنویسم .
    با تشکر
    توضیح كلی و ارائه ی راه حل برای حل سوال:

    در حالتی كه فرض كنیم ساعت اول توی تاریخ اول و ساعت دوم توی تاریخ دوم قرار داره، یعنی مثلاً این دو تا زمان:

    5 تیر 1388 ساعت 13:14:15
    و
    18 تیر 1388 ساعت 15:16:17

    در این حالت، 13 حالت مختلف رو باید بررسی كرد برای بدست آوردن تمامی حالتهای تداخل موجود. كه توی این عكس براحتی قابل مشاهده هست:


    دو تا خط آبی ابتدا و انتهای زمان ها هستند.
    خط قرمز بالا ابتدا و انتهای زمان ها هست.
    خط های سبز 13 حالت مختلف هستند.
    نقاط مشكی رو هم زدم كه بهتر بشه فهمید سر و ته ماجرا كجاست!

    حالا اگر این 13 حالت رو یه جمع بندی كلی بكنیم، به سه حالت كلی میرسیم.


    توضیح كامل شیوه ی حل مسئله و كد مورد نیاز:

    این الگوریتم و شیوه ای كه الان میخوام خدمتتون عرضه كنم، نتیجه ی تقریباً 6 روز تفكر و بررسی بنده برای برای انجام این كار هست. و تا حد 100% به نتیجه ای كه میده ایمان دارم. چون توی پروژه ای ازش استفاده كردم كه اگر حتی یك ثانیه بین دو تا زمان مورد نظر، Collision وجود داشته باشه، محاله كه بشه خسارتش رو جبران كرد...

    به هر حال،خیلی از كدها رو كه مشابه بودند یا مورد نیاز شما نبودند، از كدها حذف كردم و یك نمونه ی خیلی ساده رو برای شما ویرایش كردم و این هم توضیحاتش:

    من توی جدولی به نام AfishTadvin چند تا فیلد دارم كه دو تا از فیلدهام از نوع DateTime هست. میدونیم كه هر كدوم از این فیلدها حاوی تاریخ و البته ساعت و دقیقه و ... هستند!
    شیوه ای كه من ازش استفاده كردم، بدین ترتیب هست كه ابتدا Collision احتمالی موجود بین تاریخ های موجود رو با تاریخ های مورد نظرم، بدست میارم، سپس اگر Collision ای مشاهده شد، حالا میام دوباره Collision موجود بین زمان های مورد نظرم رو با زمان های داخل پایگاه داده بدست میارم. در نهایت اگر چنین Collision‌ ای موجود بود، اون رو متوجه میشم و ...

    این هم كد:
    فرض كنید كه داخل رویداد یك دكمه این كد رو داریم. هر موقع دكمه زده شد، دو تاریخ مورد نظر خودمون و همچنین زمان های مورد نظرمون رو به تابع هایی كه در ادامه مینویسم، میفرستیم و ...

    DateTime afishTimeFromCollision = new DateTime(faDatePicker1.SelectedDateTime.Year, faDatePicker1.SelectedDateTime.Month, faDatePicker1.SelectedDateTime.Day, ngmTimePicker1.Hour, ngmTimePicker1.Minute, 0);
    DateTime afishTimeToCollision = new DateTime(faDatePicker2.SelectedDateTime.Year, faDatePicker2.SelectedDateTime.Month, faDatePicker2.SelectedDateTime.Day, ngmTimePicker2.Hour, ngmTimePicker2.Minute, 0);

    string xAfishCodeTemp = "";
    string xTempEqpSerial = "";
    bool xContinue = true;

    for (int i = 0; i < dataGridViewTolid.Rows.Count; i++)
    {
    xTempEqpSerial = dataGridViewTolid.Rows[i].Cells[1].Value.ToString();

    if (myCollisionChecker.NGMEquipmentsCollisionDetectio n(xTempEqpSerial, afishTimeFromCollision, afishTimeToCollision))
    {
    xAfishCodeTemp = myCollisionChecker.AfishCode();
    MessageBox.Show("Time Collision Detection... You are not able to continue!");
    xContinue = false;
    break;
    }
    }

    if (!xContinue)
    {
    break;
    }
    این تابع اصلی هست كه درون اون دستور خاص مورد نیاز ساخته شده و به SQL داده میشه. اگر بین تاریخ های مورد نظر ما، و زمان های ذخیره شده توی بانك اطلاعاتیمون، Collision وجود داشته باشه، با استفاده از تابع بعدی كه در ادامه مینویسم، زمان های مورد نظر رو برای Collision بررسی میكنیم و ...

    public bool NGMEquipmentsCollisionDetection(string eqpSerialNumber, DateTime afishTimeFrom, DateTime afishTimeTo)
    {
    _AfishCode = "";
    TimeSpan mySpan = new TimeSpan();
    mySpan = afishTimeTo - afishTimeFrom;
    int dayCounter = mySpan.Days;

    int myHourFrom = afishTimeFrom.Hour;
    int myMinuteFrom = afishTimeFrom.Minute;

    int myHourTo = afishTimeTo.Hour;
    int myMinuteTo = afishTimeTo.Minute;

    int xNum;
    string[] xEqpList;

    bool xTemp = false;
    for (int i = 0; i <= dayCounter; i++)
    {
    DateTime xAfishTimeFrom = afishTimeFrom.AddDays(i);
    _AfishTimeFrom = new DateTime(xAfishTimeFrom.Year, xAfishTimeFrom.Month, xAfishTimeFrom.Day, 0, 0, 0);
    _AfishTimeTo = new DateTime(xAfishTimeFrom.Year, xAfishTimeFrom.Month, xAfishTimeFrom.Day, 23, 59, 59);

    #region AfishTadvin
    //Check the times for collision on SQL Command. If there is any collision on the DATES, SQL returns its rows...
    cmd = new SqlCommand("SELECT AfishCode,EqpList,AfishTimeFrom,AfishTimeTo FROM AfishTadvin WHERE (AfishTimeFrom>=@p1 AND AfishTimeFrom<=@p2) OR (AfishTimeTo>=@p1 AND AfishTimeTo<=@p2) OR (AfishTimeFrom<=@p1 AND AfishTimeTo>=@p2)", con);
    SqlParameter p1 = new SqlParameter("p1", _AfishTimeFrom);
    SqlParameter p2 = new SqlParameter("p2", _AfishTimeTo);
    p1.SqlDbType = SqlDbType.DateTime;
    p2.SqlDbType = SqlDbType.DateTime;
    SqlParameter[] parameterArray = new SqlParameter[] { p1, p2 };
    foreach (SqlParameter parameterX in parameterArray)
    {
    cmd.Parameters.Add(parameterX);
    }
    try
    {
    con.Close();
    con.Open();
    dr = cmd.ExecuteReader();
    if (dr.HasRows)
    {
    try
    {
    while (true)
    {
    dr.Read();

    myNGM = new NGMPersonsCodeString(dr[1].ToString());
    xNum = myNGM.NGMPersonsCodeListCount;
    xEqpList = new string[xNum];
    if (xNum != 0)
    {
    for (int i1 = 0; i1 < xNum; i1++)
    {
    xEqpList[i1] = myNGM.NGMPersonsCodeList[i1];
    }
    }
    //Now, after checking the DATEs collision, we should check the TIMEs collision if they have.
    if (checkTimeCollision(myHourFrom, myMinuteFrom, myHourTo, myMinuteTo, DateTime.Parse(dr[2].ToString()).Hour, DateTime.Parse(dr[2].ToString()).Minute, DateTime.Parse(dr[3].ToString()).Hour, DateTime.Parse(dr[3].ToString()).Minute))
    {
    for (int i1 = 0; i1 < xNum; i1++)
    {
    if (xEqpList[i1].Equals(eqpSerialNumber))
    {
    _AfishCode = dr[0].ToString();
    xTemp = true;
    break;
    }
    }
    }
    }
    }
    catch (Exception)
    {
    //End of while with exception! LOL
    }
    }
    else
    {
    xTemp = false;
    }
    }
    catch (Exception)
    {
    //MessageBox.Show("NGM ERRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR: ");
    }
    if (xTemp)
    {
    break;
    }
    #endregion
    else
    {
    xTemp = false;

    }
    }
    con.Close();
    if (xTemp)
    {
    //collision found
    return (true);
    }
    else
    {
    //collision not found
    return (false);
    }
    }
    این هم از تابع آخر. كارش این هست كه Collision احتمالی بین دو زمان مختلف رو با دو زمان دیگه بررسی و نتیجه رو به ما اعلام میكنه...

    //Check the times if they have collision in SIMPLE date!
    private bool checkTimeCollision(int myHourFrom, int myMinuteFrom, int myHourTo, int myMinuteTo, int xHourFrom, int xMinuteFrom, int xHourTo, int xMinuteTo)
    {
    DateTime myFrom = new DateTime(2009, 9, 13, myHourFrom, myMinuteFrom, 0);
    DateTime myTo = new DateTime(2009, 9, 13, myHourTo, myMinuteTo, 0);
    DateTime xFrom = new DateTime(2009, 9, 13, xHourFrom, xMinuteFrom, 0);
    DateTime xTo = new DateTime(2009, 9, 13, xHourTo, xMinuteTo, 0);

    if ((myFrom >= xFrom) && (myFrom <= xTo) || ((myTo >= xFrom) && (myTo <= xTo)) || ((myFrom <= xFrom) && (myTo >= xTo)))
    {
    if (myTo == xFrom || myFrom == xTo)
    {
    return (false);
    }
    else
    {
    return (true);
    }
    }
    else
    {
    return (false);
    }
    }


    توضیح خاصی نیاز نمیبینم! مگر اینكه بگم چون این كد ها رو از توی پروژه ی خودم كپی كردم اینجا، شاید بعضی از مقادیر و كلاس هایی كه استفاده شده، براتون نامفهوم باشه! اصل ماجرا رو ولی براحتی میتونید برداشت كنید. ان شاء الله.

    پاینده باشید و سرافراز.
    یا علی مدد

  33. #353
    کاربر جدید آواتار imanet
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    تهران
    سن
    40
    پست
    1

    نقل قول: معرفی یک لینک برای مشاهده ی انواع ConnectionString ها

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

    http://www.dofactory.com/Connect/Connect.aspx


    سايتي كه معرفي كرديد خوب بود
    اينم يك مرجع تقريبا كامل براي انواع مختلف connection string
    http://connectionstrings.com
    اميدوارم به كارتون بياد

  34. #354
    کاربر تازه وارد آواتار BILLY_Mgs
    تاریخ عضویت
    تیر 1388
    محل زندگی
    @ My Team Foundation Server
    پست
    68

    نقل قول: کپی کامل یک دایرکتوری و تمامی زیرشاخه های آن بصورت بازگشتی

    نقل قول نوشته شده توسط sinpin مشاهده تاپیک
    using System.IO;
    void CopyDirectory(DirectoryInfo source, DirectoryInfo destination)
    {
    if (!destination.Exists)
    destination.Create();
    // Copy all files.
    FileInfo[] files = source.GetFiles();
    foreach (FileInfo file in files)
    file.CopyTo(Path.Combine(destination.FullName, file.Name));

    // Process subdirectories.
    DirectoryInfo[] dirs = source.GetDirectories();
    foreach (DirectoryInfo dir in dirs)
    {
    // Get destination directory.
    string destinationDir = Path.Combine(destination.FullName,dir.Name);
    // Call CopyDirectory() recursively.
    CopyDirectory(dir, new DirectoryInfo(destinationDir));
    }
    }
    منبع - کتاب : Visual C#‎ 2005 Recipes: A Problem-Solution Approach

    سلام این پست ماله 3-2 ساله پیشه !
    الان یه مشکلی دارم .
    میخوام همین حالتو با یک progressbar یا یک Backgrundworker انجام بدم چون حجم فولدر ها بالای ه 2 گیگ هست و برنامه فریز میشه میشه راه نمایی کنین چه جوری progress bar بزارم ؟
    ببخشید که بد جایی نوشتم . آخه نیاز فوری دارم.

  35. #355
    کاربر دائمی آواتار sds1920
    تاریخ عضویت
    تیر 1388
    محل زندگی
    اصفهان
    سن
    34
    پست
    483

    افزودن خاصیت Radio Button به یک Listview

    ابتدا خاصیت CkeckBoxes رادر Listview برابر با True قرار دهید.سپس کدهای زیر را در متد رویداد ItemChecked بنویسید.

    private  int LastIndexChecked;
    private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e)
    {

    if (listView1.CheckedIndices.Count==2)
    {
    //UnCheck before Item.
    listView1.Items[LastIndexChecked].Checked = false;

    //set Last index selected.
    LastIndexChecked = listView1.CheckedIndices[0];
    }
    else
    //for first step.
    if(listView1.CheckedIndices.Count==1)
    {
    LastIndexChecked = listView1.CheckedIndices[0];
    }
    }

  36. #356
    کاربر دائمی آواتار sds1920
    تاریخ عضویت
    تیر 1388
    محل زندگی
    اصفهان
    سن
    34
    پست
    483

    Rename کردن یک فایل در C#‎

    در c شارپ تابعی با نام Rename وجود ندارد یا حداقل من ندیدم.ولی می توانید برای Rename کردن از کد زیر استفاده کنید.

    System.IO.File.Move("File Name", "New File Name");


    توجه کنید که آدرس های File Name و New File Name باید یکسان باشد.
    برای مثال عکسی با نام Picture1 را به Picture2 تغییر میدهیم:

    System.IO.File.Move(@"C:\Picture1.jpg",@"C:\Picture2.jpg");

  37. #357
    کاربر دائمی آواتار Mohsen229266
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    سن
    36
    پست
    396
    با سلام دیدم بعضی از دوستان با ایونت KeyPress در dataGridView مشکل داشتند کدشو اینجا قرار دادم

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
    e.Control.KeyPress += DataGridKeyPress;
    }
    private void DataGridKeyPress(object sender, KeyPressEventArgs e)
    {

    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : پنج شنبه 29 اسفند 1392 در 21:46 عصر

  38. #358
    کاربر دائمی آواتار navid_8x
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    قزوین
    پست
    130

    تشخیص روشن بودن Caps Lock و Num Lock و Scroll Lock بدون API

    در فرم ها می شه از تابع IsKeyLocked استفاده کرد.
    IsKeyLocked(Keys.NumLock);
    IsKeyLocked(Keys.CapsLock);
    IsKeyLocked(Keys.Scroll);

    و در console از خود کلاس Console
                    Console.NumberLock;
    Console.CapsLock;

    که از نوع بولی هستن.

  39. #359

    Delimiters for Documentation Tags (راهنما برای متد ها و کلاسهای خودتان )

    این راهنما حتی می تواند به صورت فارسی تایپ شود وهنگام استفاده از یک متد شما را در درک و مقدار دهی آن راهنمایی میکند مانند متد ها وکلاس های خود مایکرو سافت



    ///<summary>
    /// Provides more streamlined interface for associating a single or multiple extensions with a single program.
    ///</summary>
    classAssociationManager
    {
    AssociationManager a = newAssociationManager();
    ///<summary>
    /// Determines of the list of extensions are associated with the specified program id.
    ///</summary>
    ///<param name="progId">Program id to check against.</param>
    ///<param name="extensions">String array of extensions to check against the program id.</param>
    ///<returns>String array of extensions that were not associated with the program id.</returns>
    publicstring[] CheckAssociation(string progId, paramsstring[] extensions)
    }
    .
    .
    .
    {


  40. #360

    How to: Create a Custom Double-Click Event(ایجاد رویداد دوبل کلیک)

    به نظر کامل و روشنه این طور نیست؟


    using System;
    using System.Windows.Forms;
    using System.Drawing;
    namespace ButtonDClick
    {
    public class Form1 : System.Windows.Forms.Form
    {
    // Track the number of
    // double-clicks with the count variable.
    int count = 0;
    public Form1()
    {
    InitializeComponent();
    // Display OK button for closing.
    this.MinimizeBox = false;
    //
    Create an instance of the DoubleClickButton class.
    DoubleClickButton dClickB = new DoubleClickButton();
    dClickB.Bounds = new Rectangle(10,10,200,30);
    dClickB.Text = "Double-click me!";
    Controls.Add(dClickB);
    // Add the DClick
    event hander to the DoubleClick event.
    dClickB.DoubleClick += new EventHandler(DClick);
    }
    protected override void Dispose( bool disposing )
    {
    base.Dispose( disposing );
    }
    private void InitializeComponent()
    {
    this.Text = "Form1";
    }
    private void DClick(object o, EventArgs e)
    {
    // Display the number of double-clicks.
    MessageBox.Show("Double-click count = " + ++count);
    }
    static void Main()
    {
    Application.Run(new Form1());
    }
    // Derive a button with extended funtionality
    // from the Button class.
    public class DoubleClickButton : System.Windows.Forms.Button
    {
    // Note that the DoubleClickTime property gets
    // the maximum number of milliseconds allowed between
    // mouse clicks for a double-click to be valid.
    int previousClick = SystemInformation.DoubleClickTime;
    public new
    event EventHandler DoubleClick;
    protected override void OnClick(EventArgs e)
    {
    int now = System.Environment.TickCount;
    // A double-click is detected if the the time elapsed
    // since the last click is within DoubleClickTime.
    if ( now - previousClick <= SystemInformation.DoubleClickTime)
    {
    // Raise the DoubleClick
    event.
    if (DoubleClick != null)
    DoubleClick(this,EventArgs.Empty);
    }
    // Set previousClick to now so that
    // subsequent double-clicks can be detected.
    previousClick = now;
    // Allow the base class to raise the regular Click
    event.
    base.OnClick(e);
    }
    //
    Event handling code for the DoubleClick event.
    protected new virtual void OnDoubleClick(EventArgs e)
    {
    if (this.DoubleClick != null)
    this.DoubleClick(this, e);
    }
    }
    }
    }
     

صفحه 9 از 14 اولاول ... 7891011 ... آخرآخر

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

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

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