جامعه برنامه نویس

برگشت   جامعه برنامه نویس > برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > برنامه نویسی در C#‎

اطلاعیه

برنامه نویسی در C#‎ برنامه برنامه نویسی با استفاده از زبان C#‎


پاسخ
 
ابزار های تاپیک طریقه نمایش
قدیمی پنج شنبه 25 بهمن 1386, 10:56 صبح   #1
sinpin
VIP
 
تاریخ عضویت: مرداد 1383
پست: 2,275
تشکرها: 276
2,743 بار تشکر شده در 720 پست
ارسال پیام از طریق Yahoo به sinpin
1001 نکته در سی شارپ

سلام

هدف از این تاپیک، صرفا جمع آوری برخی نکات و ترفندهای خلاصه و مفید برنامه نویسی در سی شارپ تحت دات نت فریمورک است. بدلیل تنوع کاربران تالار و گستردگی زبان و فریمورک؛ لزومی ندارد نکته ای که در این تاپیک ارسال میشود موضوعی غامض و چشمگیر باشد؛ در واقع هر نکته ای که به شکل صحیح ارسال شود، میتواند مفید باشد. لطفا قبل از ارسال هر نکته - با مراجعه به لیست نکات - از تکراری نبودن آن اطمینان حاصل نمایید.
ماهیت تاپیک
این تاپیک محل مناسبی برای این موارد نیست :
آموزش برنامه نویسی، سئوال و جواب کردن، سعی در اثبات برتری یک روش خاص، خورده گیری از مطالب ارسالی دیگران، ارسال مطالب غیرفنی و نامرتبط و ...
لذا چنانچه راجع به هر یک از نکات سئوال و یا مشکلی پیش آمد، لطفا موضوع رو از طریق ارسال پیام خصوصی به نویسنده مطلب و یا طرح در یک تاپیک مستقل، حل و فصل کنید.
زبان پیشفرض
زبان پیشفرض ارسال کد در این تاپیک سی شارپ و زبان محاوره ای جهت توضیحات فارسی است.
چنانچه موضوع ارسالی را از سایتی انگلیسی زبان برداشت میکنید حداقل چند خط از موضوع آن را به فارسی ترجمه نمایید.
چکیده نویسی
نکات و ترفندها رو بصورت کاملا خلاصه، مفید و ماژولار (تمرکز هر پست تنها روی یک نکته باشد) ارسال نمایید و از درج هرگونه نکته ی طولانی خودداری و چنانچه نکته ی قابل توجه ای سراغ دارید که نیاز به کدنویسی و توضیحات طولانی دارد؛ تنها به یک اشاره کوچک بسنده و فایل سورس و یا توضیحات کامل را ضمیمه فرمایید.
درج عنوان پست
  1. عنوان مناسب و مختصری برای مطلب ارسالی خود پیدا کرده و آن را در قسمت عنوان پست بنویسید.
  2. عنوان پست را دقیق و قطعی انتخاب نمایید؛ برای مثال عنوان : "چند نکته مهم در سی شارپ" نامناسب است و یا بجای عنوان : "چند فیلم آموزشی مفید" بهتر است بنویسید : "معرفی لینک دانلود چند فیلم آموزشی رایگان در مورد LINQ"
درج رفرنس اصلی و نکات تست شده
چنانچه نکته ارسالی را از منبعی برداشت میکنید لطفا لینک اصلی آن را نیز در انتهای مطلب درج فرمایید. (با اینکار سایر دوستان نیز میتوانند با مراجعه به لینک از جزییات نکته ارسالی بیشتر مطلع گردند.) و تنها نکات و مطالبی رو ارسال کنید که خود شما تست کرده و از صحت عملکرد اونها مطمئن هستید.



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


_________________________
راهنمای آیکن پستها :
: نکات متوسط
: نکات پیچیده
: نکات جالب (صرفنظر از سطح پیچیدگی)
: نکات ضمیمه دار
: نکات توضیحی و تعاریف
: لینک به نکاتی که قبلا در سایت مطرح شده اند.
__________________
...مرا به خانه ام ببر، اگرچه خانه؛ خانه نیست

آخرین ویرایش به وسیله sinpin : یک شنبه 10 آذر 1387 در 15:14 عصر
sinpin آفلاین است   پاسخ با نقل قول
153 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:
*unos*, 1382_1382, 81579001, A.Michael, A.S.Roma, abedi66, abs_jafarzadeh, ace.coder, adel.86, afshin61, alaveh, alifatehi, aligilani1986, aliondvd, alireza1384, AliSoft, ali_ghasemi2263, ali_kolahdoozan, AlwaysOnScreen, amin.honest, amin009, amin3000, amin750, AmirAmiri, amironline, application_13, ar.mahdian, armintabiz, aryaei2000, aryalink, ayor_1985_110, az_sami, bahman_akbarzadeh, behnam25214, behnam_rahdari, belarak, bermooda, bestbn, be_kh, bikar_kgk, bsng110, cccccccccc, cdeb_4975, cinepars, com_engineer_ab, daffy_duck376, danial82, ehsan248, ehsanm, ermia2008, fakari66, farzad_vb62, fbayanati, fire_off, FirstLine, georgiaro, gonjeshke, hallaji, hamedmehdihamed, hamidsina, hanif_x90, hellosaeed, hm8212000, hossainreza, hosseini_87, HSSNHERAVI, H_T_O_A, ibd_iran, ice flower, imans62, ir_programmer, it_maryam, jamshid2002, kanan123, kiarayan, Mahtab12, mary3541, maryamgh, marzieh karani, Maximus, mcse2007, mdssoft, mehdi lotfi, mehran_kashefi, mfardh, mhj2008, milade, milani, mmramezani2101, mobin-hgh, moh3en-royan, mohamad2051, mohammadi4net, Mojtaba.Kh, mojtaba1363, mojtabamakki, mom alone, msaeedd, msmiran2008, mvb_mehran, NightElf, niko2008, Nova19, n_samay, pashang, payamsalami, paysokhan, PHP000001, pourya_comphard, pranses_smt, qazxsw, ramak.co, razavi_university, RED-C0DE, redribbon, reza273, reza_ariaa, Ricky Kaka, robat7, Royce_Da, sa.mousavi, saber187518, saeed_hf52, saieed ahmadi, salar_cpp_cs, salehbagheri, sarlakhadi, satar_niakan, Satyar, sepehr_sepehr, seven7777777, shadab*, SHERVIN.v, shirin_sh1024, silentrise, sohrab_mehneh, sorushma, Successful, tadaei, tarxtur, tayebeh, tdkhakpur, tiffany, ultrap30, مهرانه, venus.i, Xcalivorse, yaqubian, yousef.khorshidi, zahra6377, اندیشه سازان, رافعی مهدی, سید علی طباطبایی مزرعه نو
قدیمی پنج شنبه 25 بهمن 1386, 10:57 صبح   #2
sinpin
VIP
 
تاریخ عضویت: مرداد 1383
پست: 2,275
تشکرها: 276
2,743 بار تشکر شده در 720 پست
ارسال پیام از طریق Yahoo به sinpin
Post ایندکس (قسمت اول)


نقل قول:
اصول اولیه OOP و دات نت فریمورک :
مفاهیم بنیادین شیء گرایی :
تعاریف، اشیاء و کلاسها :
فیلدها، پراپراتیها و متودها :
اینترفیس، رویداد، Delegate, Threading :
بازتاب Reflection :
Exceptions :
الگوهای طراحی (Design Patterns) :
نقل قول:
کار کردن با انواع داده ها :
اعداد :
رشته ها :
تاریخ :
نقل قول:
کار با کنترلها و کامپوننتها :
کنترلها :
کنترلهای استاندارد :

فرمها : کنترلهای ویرایشی کنترلهای مبتنی بر لیست و جدول : انواع دکمه ها :
  • بزودی...
کنترلهای نمایشی : PictureBox, Label, ...
تغییر خواص عمومی کنترلها : کنترلهای سفارشی (Derived Controls, UserControls) :
کامپوننتها :
نقل قول:
دیتابیس و بانکهای اطلاعاتی :
عملیات مرسوم با ADO.Net :
کوئریها (SQL) :
نقل قول:
فایلها، استریمها (I/O) :
فایلها :
دایرکتوریها و درایوها :
فشرده سازی : سریالیزشین :


آخرین ویرایش به وسیله sinpin : دوشنبه 27 خرداد 1387 در 10:38 صبح
sinpin آفلاین است   پاسخ با نقل قول


24 نفر از 30 کل رای دهندگان این پاسخ را مفید ارزیابی کرده اند.
184 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:
'برنامه نویس', .M8SPY., 1382_1382, 81579001, A.S.Roma, abadanboy, abbaspmz, abbas_pmz, adel.86, adelinho, afshin61, ahmadr, aliondvd, AliyerEdon, ali_autumnal, ali_kashani, amin.honest, amin3000, amin_alexi, Amir Taghavi, amir.khanlari, AmirAmiri, amirekbatani, amirmk, amironline, amir_pro, ammarkarimi, arash1360, ariyanna, armanbm, Armin060, aryaei2000, a_true_2004, be_kh, bsng110, cccccccccc, com_engineer_ab, DaDaSh, dare_khamosh, dgmuhammad, dornika, ealvandi, ehsan-avr, ehsan248, ehsanm, eiman_ghasemy, elahi3m, el_abdollahi, ermia2008, essa_61, E_Ravari, farnooshhp, farzad_itc, FirstLine, first_squit, ghayegh, golihaghighi, gonjeshke, habedini, hadi000333, hadi_iql, hamed_bostan, hassan_kahrizy, Hco_Company, hellosaeed, hm8212000, homejf, hossainreza, H_T_O_A, ibd_iran, ice flower, imans62, Itist82, kamran.gahramany, kanan123, kh1387, M-Gheibi, m.soleimani, mah.yar, Mahdad999, mahdi87_gh, Mahla_Bayat, Mahmood_N, majid325, majjjj, Mak-VS, mary3541, matinebi, mavarfan, mdssoft, medi33, mehrdad hamid reza, mhj2008, milani, MJVMJV, moh3en-royan, mohammad2974, mohammadi4net, Mohsen229266, mojtaba1363, monaizadi, monazzah, mrhamed, msg_roz, msn_vb, msoleiman, mvb_mehran, naatamam, net.میلاد(منجی), NightElf, nima_persian, notation, n_samay, parvazbanasim, pashang, PersianPolaris, petros, peymanjon, pezhman32, Pr0grammer, pranses_smt, pushpush, qazxsw, r0o0yaaa, ramak.co, razavi_university, RED-C0DE, reyhaneh67, reza273, reza_ariaa, Ricky Kaka, RoostaYeBekr, roya2002_80, Royce_Da, r_babaee, saba106, saeedSoft, saeed_68, saeid69, sajad.n, salar_cpp_cs, salehbagheri, sara_B, sardari, satar_niakan, Satyar, selven yaz, seniamail, sepadl71, sepehr.net, sepehr_sepehr, sgb962, Shadmehr84, shayan2020, sheervin, SHERVIN.v, shirin_sh1024, sh_m, silentrise, sima_62, sirafemaa, subsub, s_ahmadneya, tayebeh, tdkhakpur, tiffany, ultrap30, فاطـمه, مهندس مهدی, مهرانه, پایلوت, venus.i, winer3549, xxxxxxxxxx, yousef.khorshidi, z.nasiri, zire noore mah, اقاقیا, امین2008, ابراهیم ب, خانم گل, رافعی مهدی, رضا عربلو, صمد حسین زاده آزاد
قدیمی پنج شنبه 25 بهمن 1386, 10:57 صبح   #3
sinpin
VIP
 
تاریخ عضویت: مرداد 1383
پست: 2,275
تشکرها: 276
2,743 بار تشکر شده در 720 پست
ارسال پیام از طریق Yahoo به sinpin
Post ایندکس (قسمت دوم)


نقل قول:
گرافیک : GDI, GDI+, DirectX, OpenGL
گرافیک :
نقل قول:
نکات سیستمی :
عملیات قابل انجام توسط توابع API و سایر کتابخانه های سیستمی :
عملیات قابل انجام توسط دستورات خط فرمان : عملیات قابل انجام توسط WMI :
عملیات متداول و ویژه :
رجیستری ویندوز و EventLog:
پروسه ها :
سرویسهای ویندوز :
  • بزودی...
نقل قول:
توزیع و Setup سازی:
توزیع برنامه :
  • بزودی...
توزیع دیتابیس :
توزیع گزارشات کریستال ریپورت :
  • بزودی...
نقل قول:
مباحث مختص دات نت فریمورک 3.0 و 3.5 :
نوآوری ها :
مباحث اولیه :
LINQ WPF :
سایر مباحث :
نقل قول:
معرفیها :
معرفی ابزار سودمند :
معرفی سایتهای مفید : معرفی کتابها و سایر مطالب آموزشی :

آخرین ویرایش به وسیله sinpin : دوشنبه 27 خرداد 1387 در 10:39 صبح
sinpin آفلاین است   پاسخ با نقل قول


8 نفر از 12 کل رای دهندگان این پاسخ را مفید ارزیابی کرده اند.
132 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:
*unos*, .M8SPY., 1382_1382, 81579001, abadanboy, abouzar, ahmadirad1365, aliondvd, amin.honest, AmirAmiri, amironline, ammarkarimi, ariyanna, Armin060, ASADIDEBUGER, a_kh_63, bachebahal_1363, be_kh, BILLY_Mgs, black_wear, bsng110, cccccccccc, com_engineer_ab, dada_mohsen, dolfin_1094, ealvandi, eAmin, ehsan-avr, ehsan248, ehsanm, emdadgar2, eniac_new, farzad_itc, fascist, FirstLine, ghayegh, h.alizadeh, hbsa420, hm8212000, hossainreza, hosseini1980, H_T_O_A, ibd_iran, ice flower, imans62, IranMajid, joker_boy62, juveatta, kanan123, khoda2006, kiumarsknb, m.soleimani, mahdi87_gh, Mahmood_N, Mainar, Mak-VS, mamizadeh, Maryam_IT, mdssoft, medi33, mehdi lotfi, Merila_Rad, meslehichkas, meykou, mhj2008, milani, Modifier, moh.mahdavi, moh3en-royan, Mohsen229266, mohsen_metn, Mojtaba.Kh, monaizadi, msn_vb, msoleiman, naatamam, nargil, nima_persian, n_samay, pesare_ariyayi, Pr0grammer, pushpush, qazxsw, r.sadeghi, r0o0yaaa, razavi_university, RED-C0DE, reza273, reza_ariaa, reza_program, Ricky Kaka, Royce_Da, sabuye teshneh, saeedk2, saeedSoft, saeid69, saieed ahmadi, sajad.n, sajjadlove, sara_B, sarnev6t, Satyar, scanme, seniamail, sepadl71, sheervin, shirin_sh1024, sh_m, silentrise, sirafemaa, smk311, sorushma, subsub, Sweety, s_ahmadneya, tanhatarin1987, tarxtur, tdkhakpur, tiffany, ultrap30, مهندس مهدی, مهرانه, venus.i, veyqdl, VisualStudio, vzsoft, Yama12, yashar_ataee_alishah, yousef.khorshidi, y_ziaee, امین2008, رافعی مهدی
قدیمی پنج شنبه 25 بهمن 1386, 11:22 صبح   #4
sinpin
VIP
 
تاریخ عضویت: مرداد 1383
پست: 2,275
تشکرها: 276
2,743 بار تشکر شده در 720 پست
ارسال پیام از طریق Yahoo به sinpin
Post برخی از تاپیکهای مهم و پربازدید در تالار سی شارپ

دوستان لطفا از طریق پیامهای شخصی من رو در تکمیل این بخش یاری کنید :این لیست به مرور تکمیلتر (و نیز دسته بندی) خواهد شد

آخرین ویرایش به وسیله sinpin : شنبه 07 اردیبهشت 1387 در 08:34 صبح
sinpin آفلاین است   پاسخ با نقل قول


8 نفر از 13 کل رای دهندگان این پاسخ را مفید ارزیابی کرده اند.
قدیمی پنج شنبه 25 بهمن 1386, 11:33 صبح   #5
sinpin
VIP
 
تاریخ عضویت: مرداد 1383
پست: 2,275
تشکرها: 276
2,743 بار تشکر شده در 720 پست
ارسال پیام از طریق Yahoo به sinpin
Exclamation حاشیه دار کردن کنترل TextBox با یک رنگ دلخواه

در کلاس TextBox خود (و یا سایر کنترلهای دلخواه : کامبوباکس، لیست باکس و ...) بنویسید :
کد:
private static int WM_NCPAINT = 0x0085;
private static int WM_ERASEBKGND = 0x0014;
private static int WM_PAINT = 0x000F;

[DllImport("user32.dll")]
static extern IntPtr GetDCEx(IntPtr hwnd, IntPtr hrgnclip, uint fdwOptions);

[DllImport("user32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr hDC);

protected override void WndProc(ref Message m)
{
    base.WndProc(ref m);
    if (m.Msg == WM_NCPAINT || m.Msg == WM_ERASEBKGND || m.Msg == WM_PAINT)
    {
        IntPtr hdc = GetDCEx(m.HWnd, (IntPtr)1, 1 | 0x0020);

        if (hdc != IntPtr.Zero)
        {
            Graphics graphics = Graphics.FromHdc(hdc);
            Color borderColor = Color.Blue;
            Rectangle rectangle = new Rectangle(0, 0, this.Width, this.Height);
            ControlPaint.DrawBorder(graphics, rectangle, borderColor, ButtonBorderStyle.Solid);
            m.Result = (IntPtr)1;
            ReleaseDC(m.HWnd, hdc);
        }
    }
}
توجه داشته باشید که انجام اینکار صرفا بوسیله override کردن رویداد paint و رسم یک مستطیل امکانپذیر نیست.
sinpin آفلاین است   پاسخ با نقل قول


3 نفر از 8 کل رای دهندگان این پاسخ را مفید ارزیابی کرده اند.
قدیمی پنج شنبه 25 بهمن 1386, 12:28 عصر   #6
sinpin
VIP
 
تاریخ عضویت: مرداد 1383
پست: 2,275
تشکرها: 276
2,743 بار تشکر شده در 720 پست
ارسال پیام از طریق Yahoo به sinpin
محو شدن تدریجی یک فرم با تغییر دادن خاصیت Opacity

کد:
private void button1_Click(object sender, EventArgs e)
{
    this.Opacity = 1;
    for (int i = 0; i < 100; i++)
    {
        this.Opacity -= 0.01;
        Application.DoEvents();
    }
}
this به آبجکت فعلی از فرم اشاره دارد.
sinpin آفلاین است   پاسخ با نقل قول


8 نفر از 10 کل رای دهندگان این پاسخ را مفید ارزیابی کرده اند.
قدیمی پنج شنبه 25 بهمن 1386, 12:41 عصر   #7
az_farzaneh
کاربر تازه وارد
 
تاریخ عضویت: آبان 1386
پست: 78
تشکرها: 33
136 بار تشکر شده در 24 پست
انتقال آیتمهای یک آرایه از اعداد به یک لیست باکس

کد:
int[] numbers = { 12, 23, 34, 45, 56, 67 };
Object[] oNumbers = new Object[numbers.Length];
numbers.CopyTo(oNumbers, 0);
listBox1.Items.AddRange(oNumbers);
az_farzaneh آفلاین است   پاسخ با نقل قول


5 نفر از 9 کل رای دهندگان این پاسخ را مفید ارزیابی کرده اند.
18 کاربر از az_farzaneh به خاطر این مطلب مفید تشکر کرده اند:
قدیمی پنج شنبه 25 بهمن 1386, 19:46 عصر   #8
sinpin
VIP
 
تاریخ عضویت: مرداد 1383
پست: 2,275
تشکرها: 276
2,743 بار تشکر شده در 720 پست
ارسال پیام از طریق Yahoo به sinpin
پیاده سازی حالت ساده ی الگوی سینگلتون در یک کلاس

کد:
sealed class SingletonClass
{
    // Static members are lazily initialized.
    // .NET guarantees thread safety for static initialization
    private static readonly SingletonClass instance =
        new SingletonClass();

    // Note: constructor is private.
    private SingletonClass(){}

    public static SingletonClass GetInstance()
    {
        return instance;
    }
}
منبع : http://www.dofactory.com/Patterns/PatternSingleton.aspx
sinpin آفلاین است   پاسخ با نقل قول


7 نفر از 10 کل رای دهندگان این پاسخ را مفید ارزیابی کرده اند.
21 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:
قدیمی پنج شنبه 25 بهمن 1386, 20:55 عصر   #9
sinpin
VIP
 
تاریخ عضویت: مرداد 1383
پست: 2,275
تشکرها: 276
2,743 بار تشکر شده در 720 پست
ارسال پیام از طریق Yahoo به sinpin
رسم یک چندضلعی توپر روی یک فرم

کد:
private void Form1_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    // Create pen.
    Pen blackPen = new Pen(Color.Black, 3);
    // Create points that define polygon.
    Point point1 = new Point(30, 50);
    Point point2 = new Point(100, 25);
    Point point3 = new Point(200, 5);
    Point point4 = new Point(250, 50);
    Point point5 = new Point(270, 100);
    Point point6 = new Point(250, 250);
    Point[] curvePoints = {point1, point2, point3, point4, point5, point6};
    // Draw polygon to screen.
    g.DrawPolygon(blackPen, curvePoints);
    // Fill polygon
    g.FillPolygon(Brushes.Red, curvePoints);
}
sinpin آفلاین است   پاسخ با نقل قول


4 نفر از 8 کل رای دهندگان این پاسخ را مفید ارزیابی کرده اند.
15 کاربر از sinpin به خاطر این مطلب مفید تشکر کرده اند:
قدیمی پنج شنبه 25 بهمن 1386, 21:19 عصر   #10
sinpin
VIP
 
تاریخ عضویت: مرداد 1383
پست: 2,275
تشکرها: 276
2,743 بار تشکر شده در 720 پست
ارسال پیام از طریق Yahoo به sinpin
کشیدن نقاشی با توابع ساده گرافیکی و ذخیره خروجی در یک فایل

کد:
public void Draw2File ()
{
    Bitmap    bmp = new Bitmap (500, 400);
    Graphics gr = Graphics.FromImage (bmp);
    Rectangle rect = new Rectangle (20, 20, 450, 350);
    gr.DrawRectangle (Pens.Red, rect);
    gr.FillRectangle(Brushes.Pink, rect);
    gr.DrawString ("Salam", new Font ("Arial", 10), Brushes.Red, 50, 50);
    gr.DrawArc (Pens.Red, 30, 30, 60, 60, 0, 180);
    gr.DrawEllipse(new Pen(Color.Yellow, 3), new Rectangle(200, 100, 200, 200));
    bmp.Save ("C:\\1.bmp");
    bmp.Dispose ();
    gr.Dispose ();
}
sinpin آفلاین است   پاسخ با نقل قول


7 نفر از 12 کل رای دهندگان این پاسخ را مفید ارزیابی کرده اند.
پاسخ

بوک مارک کردن این تاپیک

Tags
.net framework, ترفند, Tips, Tricks, نکته ها


کاربرانی که این تاپیک را مشاهده میکنند: 2 (0 کاربران و 2 مهمان)
 
ابزار های تاپیک
طریقه نمایش

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

BB code روشن است
خندانک ها روشن هستند
[IMG] روشن است
HTML خاموش است

پرش




واحد زمان برحسب ساعت لندن +3.5. ساعت هم اکنون 17:32 عصر است.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 1388, Jelsoft Enterprises Ltd.
خدمات میزبانی این سایت تحت پوشش شرکت ایران هاست می باشد.