PDA

View Full Version : 1001 نکته در سی شارپ



صفحه : [1] 2 3

sinpin
پنج شنبه 25 بهمن 1386, 10:26 صبح
سلام

هدف از این تاپیک، صرفا جمع آوری برخي نکات و ترفندهای خلاصه و مفید برنامه نویسی در سی شارپ تحت دات نت فریمورک است. بدلیل تنوع کاربران تالار و گستردگی زبان و فریمورک؛ لزومی ندارد نکته ای که در اين تاپيك ارسال ميشود موضوعی غامض و چشمگیر باشد؛ در واقع هر نکته ای که به شکل صحیح ارسال شود، میتواند مفید باشد. لطفا قبل از ارسال هر نكته - با مراجعه به ليست نكات - از تكراري نبودن آن اطمينان حاصل نماييد.
ماهيت تاپيك


این تاپیک محل مناسبی برای این موارد نیست :
آموزش برنامه نویسی، سئوال و جواب کردن، سعی در اثبات برتری یک روش خاص، خورده گیری از مطالب ارسالی دیگران، ارسال مطالب غیرفنی و نامرتبط و ...
لذا چنانچه راجع به هر یک از نکات سئوال و یا مشکلی پیش آمد، لطفا موضوع رو از طریق ارسال پیام خصوصی به نویسنده مطلب و یا طرح در یک تاپیک مستقل، حل و فصل کنید.

زبان پیشفرض

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

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




عنوان مناسب و مختصری برای مطلب ارسالی خود پیدا کرده و آن را در قسمت عنوان پست بنویسید.
عنوان پست را دقیق و قطعی انتخاب نمایید؛ برای مثال عنوان : "چند نکته مهم در سی شارپ" نامناسب است و یا بجای عنوان : "چند فیلم آموزشی مفید" بهتر است بنویسید : "معرفی لینک دانلود چند فیلم آموزشی رايگان در مورد LINQ"


درج رفرنس اصلی و نكات تست شده

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


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


_________________________
راهنماي آيكن پستها :
http://www.barnamenevis.org/forum/images/icons/icon4.gif : نکات متوسط
http://www.barnamenevis.org/forum/images/icons/icon5.gif : نکات پیچیده
http://www.barnamenevis.org/forum/images/icons/icon6.gif : نکات جالب (صرفنظر از سطح پیچیدگی)
http://www.barnamenevis.org/forum/images/icons/icon2.gif : نکات ضمیمه دار
http://www.barnamenevis.org/forum/images/icons/icon3.gif : نکات توضیحی و تعاریف
http://www.barnamenevis.org/forum/images/icons/icon14.gif : لینک به نکاتی که قبلا در سایت مطرح شده اند.

sinpin
پنج شنبه 25 بهمن 1386, 10:27 صبح
http://barnamenevis.org/images/statusicon/forum_new.gif اصول اولیه OOP و دات نت فریمورک :

http://barnamenevis.org/images/statusicon/thread_new.gif مفاهیم بنیادین شیء گرایی :

http://www.barnamenevis.org/images/icons/icon1.gif تعاریف، اشیاء و کلاسها :


http://www.barnamenevis.org/images/icons/icon3.gif (http://barnamenevis.org/showpost.php?p=467914&postcount=27) چگونه یک کلاس را مهر وموم کنیم؟ (http://barnamenevis.org/showpost.php?p=472397&postcount=110)
http://www.barnamenevis.org/images/icons/icon3.gif (http://barnamenevis.org/showpost.php?p=467914&postcount=27)معنای کلمات متداولی که میشنوید (http://barnamenevis.org/showpost.php?p=471315&postcount=85)
http://www.barnamenevis.org/images/icons/icon3.gif Abstract Class در مقابل Interface (http://barnamenevis.org/showpost.php?p=475003)
http://www.barnamenevis.org/images/icons/icon3.gif (http://barnamenevis.org/showpost.php?p=475003)Method overloading چیست؟ (http://barnamenevis.org/showpost.php?p=484121)
http://www.barnamenevis.org/images/icons/icon3.gif (http://barnamenevis.org/showpost.php?p=475003)abstract class یا کلاس مجرد چیست؟ (http://barnamenevis.org/showpost.php?p=483563)
تضمین آنکه چطور همیشه پس از اتمام کار با یک آبجکت حتما از حافظه خارج (dispose) شود (http://barnamenevis.org/showpost.php?p=485184)

http://www.barnamenevis.org/images/icons/icon1.gif فیلدها، پراپراتیها و متودها :


http://www.barnamenevis.org/images/icons/icon3.gifproperty چیست و چرا از آن استفاده می کنیم؟ (http://barnamenevis.org/showpost.php?p=475297)
ایندکسرها (Indexers) (http://barnamenevis.org/showpost.php?p=472332&postcount=103)
ارسال تعداد متغیر پارامتر به یک متود (http://barnamenevis.org/showpost.php?p=472295&postcount=101)
تعریف عملگر های سفارشی (http://barnamenevis.org/showpost.php?p=472382&postcount=109)
فراخوانی یک رویداد از رویداد دیگر (http://barnamenevis.org/showpost.php?p=484922)

http://www.barnamenevis.org/images/icons/icon1.gif اینترفیس، رویداد، Delegate, Threading :


sort کردن آبجکتهای یک کلاس با پیاده سازی اینترفیس IComparable (http://barnamenevis.org/showpost.php?p=472866&postcount=120)
فراخوانی یک متد با یک Thread‌جداگانه (http://barnamenevis.org/showpost.php?p=472893&postcount=121)
غیر فعال کردن یک رویداد در زمان اجرا (http://barnamenevis.org/showpost.php?p=480376)
یک مثال ساده از پیاده سازی delegate (http://barnamenevis.org/showpost.php?p=476177)
http://www.barnamenevis.org/images/icons/icon4.gif کار با کنترل های تولید شده توسط یک Thread‌ از طریق Thread ی دیگر (http://barnamenevis.org/showpost.php?p=474172)





http://www.barnamenevis.org/images/icons/icon1.gif بازتاب Reflection :



کار با اشیاء بوسیله ی نام آنها (با کمک از Reflection) (http://barnamenevis.org/showpost.php?p=473348&postcount=126)

http://www.barnamenevis.org/images/icons/icon1.gif Exceptions :


جلوگیری از رخ دادن Unhandled Exceptions (http://barnamenevis.org/showpost.php?p=480866)




http://barnamenevis.org/images/statusicon/thread_new.gif الگوهای طراحی (Design Patterns) :



پیاده سازی حالت ساده ی الگوی سینگلتون در یک کلاس (http://barnamenevis.org/showpost.php?p=467571&postcount=8)
معرفی یک الگوی ساده از ژنریک سینگلتون (http://barnamenevis.org/showpost.php?p=472281&postcount=99)
http://www.barnamenevis.org/images/icons/icon3.gifآشنایی با الگوهای طراحی : Decorator Pattern (http://barnamenevis.org/showpost.php?p=486422)
http://www.barnamenevis.org/images/icons/icon3.gifآشنایی با الگوهای طراحی : Singleton Pattern (http://barnamenevis.org/showpost.php?p=486541)



----------


http://barnamenevis.org/images/statusicon/forum_new.gif کار کردن با انواع داده ها :

http://barnamenevis.org/images/statusicon/thread_new.gif اعداد :


گرد کردن و رُند کردن یک مقدار اعشاری (http://barnamenevis.org/showpost.php?p=479034)
بدست آوردن قسمت صحیح یک عدد اعشاری (http://barnamenevis.org/showpost.php?p=479045)
یافتن مقادیر ماکزیمم و مینیمم Primitive Type های عددی (http://barnamenevis.org/showpost.php?p=479048)
به توان رساندن و جذر گرفتن (http://barnamenevis.org/showpost.php?p=479058)
تبدیل درجه به رادیان و بلعکس (http://barnamenevis.org/showpost.php?p=479015)
تبدیل عدد و رشته به متناظر بولین آنها و بلعکس (http://barnamenevis.org/showpost.php?p=480674)
تبدیل درجه حرارتها به یکدیگر (سلسیوس، فارنهایت، کلوین) (http://barnamenevis.org/showpost.php?p=485217)



http://barnamenevis.org/images/statusicon/thread_new.gif رشته ها :


استفاده از Place Holder ها در کار با رشته ها (http://barnamenevis.org/showpost.php?p=471909&postcount=90)
خوندن خط به خط یک رشته چند سطری (http://barnamenevis.org/showpost.php?p=481521)
گرفتن کد اسکی و یونیکد کاراکتر ها (http://barnamenevis.org/showpost.php?p=523913)
حالتهای مختلف نمایش تاریخ و زمان با کمک String Formatting (http://barnamenevis.org/showpost.php?p=481514)
تبدیل آرایه ای از بایتها به یک رشته و بلعکس (http://barnamenevis.org/showpost.php?p=478993)
بدست آوردن حروف تشکیل دهنده ی یک رشته (http://barnamenevis.org/showpost.php?p=478998)
از بین بردن کاراکتر های غیر مجاز در رشته های عددی
(http://barnamenevis.org/showthread.php?95001&p=511055&viewfull=1#post511055)
عددی بودن رشته ورودی، کراکترهای کنترلی(enter , ...) بودن، از بین بردن فضاهای خالی، ورودی unicode هست یا نه، تبدیل به unicode (http://barnamenevis.org/showthread.php?95001&p=514545&viewfull=1#post514545)
هرس کردن یک رشته متنی (http://barnamenevis.org/showpost.php?p=479000)
تولید رشته های منحصر بفرد (http://barnamenevis.org/showpost.php?p=479392)
روش بررسی خالی بودن یک رشته (http://barnamenevis.org/showpost.php?p=479135)
تبدیل مقدار یک عبارت رشته ای به یک عدد صحیح (http://barnamenevis.org/showpost.php?p=469001&postcount=42)
ایجاد متن و رشته های چند سطری (http://barnamenevis.org/showpost.php?p=469011&postcount=44)
انجام عملیات متداول بر رشته ها (http://barnamenevis.org/showpost.php?p=477424)
بدست آوردن تک تک مقادیر از یک رشته ی مرکب مرزبندی شده (http://barnamenevis.org/showpost.php?p=479009)
بدست آوردن تعداد خطوط یک رشته (http://barnamenevis.org/showpost.php?p=479008)
ايجاد رشته اي تصادفي از اعداد با طول مشخص (http://barnamenevis.org/showpost.php?p=507013)
به دست آوردن تعداد خطوط متن در یک textBox (http://barnamenevis.org/showpost.php?p=477181)
چرا و کی باید از کلاس StringBuilder به جای string استفاده کنیم ؟ (http://barnamenevis.org/showpost.php?p=472639&postcount=116)
آغاز کار با کلاس Clipboard و دادن و گرفتن یک رشته متنی به/از آن (http://barnamenevis.org/showpost.php?p=473548&postcount=130)
نحوه استفاده کاراکترهای خاص (مثلا علامت کپی رایت) (http://barnamenevis.org/showpost.php?p=474585)

http://barnamenevis.org/images/statusicon/thread_new.gif تاریخ :


برخی اعمال متدوال روی تاریخ میلادی (http://barnamenevis.org/showpost.php?p=469390)
دستیابی به تاریخ شمسی با استفاده از PersianCalender (http://barnamenevis.org/showpost.php?p=483295)
تبدیل رشته حاوی تاریخ شمسی به متناظر میلادی آن (http://barnamenevis.org/showpost.php?p=483296)




http://barnamenevis.org/images/statusicon/thread_new.gif رمزنگاری :


Hash کردن یک رشته متنی با الگوریتم MD5 (http://barnamenevis.org/showpost.php?p=473977)
Encrypt کردن ConnectionString ها موجود در فایل app.Config (http://barnamenevis.org/showpost.php?p=467921&postcount=29)
Decrypt کردن ConnectionString ها موجود در فایل app.Config (http://barnamenevis.org/showpost.php?p=467922&postcount=30)

http://barnamenevis.org/images/statusicon/thread_new.gif Enums :




بدست آوردن مقدار یک Enum از رشته متنی متناظر با آن (http://barnamenevis.org/showpost.php?p=472277&postcount=98)
بدست آوردن مقدار یک Enum از عدد متناظر آن (http://barnamenevis.org/showpost.php?p=472274&postcount=97)
بدست آوردن نام یک Enum از عدد متناظر آن (http://barnamenevis.org/showthread.php?95001&p=473189&viewfull=1#post473189)
تبدیل یک Enum به یک DataTable (http://barnamenevis.org/showpost.php?p=481495)
تبدیل نوع enum به int (http://barnamenevis.org/showpost.php?p=469478&postcount=65)

http://barnamenevis.org/images/statusicon/thread_new.gif عبارات منظم Regex:


اعتبار سنجی آدرسهای ایمیل به کمک عبارات منظم (http://barnamenevis.org/showpost.php?p=483043)






http://barnamenevis.org/images/statusicon/forum_new.gif کار با کنترلها و کامپوننتها :
http://barnamenevis.org/images/statusicon/thread_hot_new.gifکنترلها :
http://barnamenevis.org/images/statusicon/thread_new.gif کنترلهای استاندارد :

http://www.barnamenevis.org/images/icons/icon1.gif فرمها :

جابجا کردن فرم با کلیک بر روی هر قسمت از آن - با استفاده از توابع API (http://barnamenevis.org/showpost.php?p=468975&postcount=40)
جابجا کردن فرم با کلیک بر روی هر قسمت از آن - بدون استفاده از توابع API (http://barnamenevis.org/showpost.php?p=469375&postcount=52)
چگونه از یک فرم تنها یک عدد بتواند باز شود ؟ (توسط Generic Singleton) (http://barnamenevis.org/showpost.php?p=468053)
بدست آوردن لیست تمامی فرمهای باز در یک برنامه (http://barnamenevis.org/showpost.php?p=470316&postcount=68)
http://www.barnamenevis.org/images/icons/icon2.gif (http://barnamenevis.org/showpost.php?p=471151&postcount=81)نحوه ایجاد فرم About بدون کد نویسی و طراحی فرم (http://barnamenevis.org/showpost.php?p=471143&postcount=80)
محو شدن تدریجی یک فرم با تغییر دادن خاصیت Opacity (http://barnamenevis.org/showpost.php?p=467568&postcount=6)
نوشتن یک Event برای تعدادی کنترل و انجام کار مشابه بر روی انها (http://barnamenevis.org/showpost.php?p=472981&postcount=122)
غیرفعال کردن دکمه Close یک فرم (http://barnamenevis.org/showpost.php?p=481498)
رفع چشمك و پرش تصوير هنگام لود تصویر
(http://barnamenevis.org/showthread.php?95001&p=548334&viewfull=1#post548334)

http://www.barnamenevis.org/images/icons/icon1.gif کنترلهای ویرایشی

پاک کردن خاصیت Text کنترلهای موجود در یک Container بصورت بازگشتی (http://barnamenevis.org/showpost.php?p=467785&postcount=24)
بدست آوردن میزان عددی طول رشته ی درون یک TextBox (http://barnamenevis.org/showpost.php?p=481218)
پاک کردن خاصیت Text گروهی از کنترلهای مشخص (http://barnamenevis.org/showpost.php?p=467782&postcount=22)
جایگزین کردن یک رشته درون متن یک textbox به روش اندیس دهی (http://barnamenevis.org/showpost.php?p=479844)
یافتن مکان کرسر و متن انتخاب شده در یک TextBox (http://barnamenevis.org/showpost.php?p=479238)
معکوس کردن عملکرد دکمه های جهت نما روی یک TextBox (http://barnamenevis.org/showpost.php?p=479341)
یک روش ساده برای افزودن تصویر به TextBox (http://barnamenevis.org/showpost.php?p=479355)
تغییر رنگ و فونت متن انتخاب شده در یک RichTextBox (http://barnamenevis.org/showpost.php?p=480478)
انتقال مقادیر خاصیت Text دو تکست باکس از طریق Drag & Drop (http://barnamenevis.org/showpost.php?p=469377&postcount=53)
تعدادی کد اعتبارسنجی(Validation) برای TextBox (http://barnamenevis.org/showpost.php?p=490890)

http://www.barnamenevis.org/images/icons/icon1.gif کنترلهای مبتنی بر لیست و جدول :

انتقال آیتمهای Enum به یک ListBox (http://barnamenevis.org/showpost.php?p=469501)
وادار کردن لیست باکس به اسکرول تا یک آیتم مشخص (http://barnamenevis.org/showpost.php?p=469373&postcount=51)
تبديل اندازه colomn هاي يك سطر datagridview به حداكثر تعداد كاراكتر در همون ستون (http://barnamenevis.org/showpost.php?p=529271)
پر کردن دو DataGrid به صورت master detail (http://barnamenevis.org/showpost.php?p=504897)
ذخیره DataGrid در اکسل Excel (http://barnamenevis.org/showpost.php?p=508688)
بدست آوردن سطر جاري در ديتاگريدويو (http://barnamenevis.org/showthread.php?95001&p=550647)
انجام عملیات ساده بر روی کنترل Treeview (http://barnamenevis.org/showpost.php?p=474011)
سوییچ کردن بین حالتهای مختلف یک ListView (http://barnamenevis.org/showpost.php?p=479333)

http://www.barnamenevis.org/images/icons/icon1.gif انواع دکمه ها :

بزودی...

http://www.barnamenevis.org/images/icons/icon1.gif کنترلهای نمایشی : PictureBox, Label, ...


http://www.barnamenevis.org/images/icons/icon2.gif (http://barnamenevis.org/showpost.php?p=471151&postcount=81) نحوه Drag کردن عکس از یک pictureBox به یک pictureBox دیگه (http://barnamenevis.org/showpost.php?p=471135)
قرار دادن یک کنترل داخل منو (http://barnamenevis.org/showpost.php?p=475828)


http://barnamenevis.org/images/statusicon/thread_new.gif تغییر خواص عمومی کنترلها :

افزودن کنترل در زمان اجرا (http://barnamenevis.org/showpost.php?p=469032)
شفاف کردن پشت زمینه ی کنترلها (http://barnamenevis.org/showpost.php?p=467610)
عوض کردن نشانگر ماوس (cursor) روی یک کنترل (http://barnamenevis.org/showpost.php?p=467784)
طریقه تغییر دادن خاصیت FontStyle یک کنترل در زمان اجرا (http://barnamenevis.org/showpost.php?p=468255)
ساختن لیستی از کنترلها در زمان اجرا (http://barnamenevis.org/showpost.php?p=472646)
اختصاص دادن رویداد به کنترلهای ساخته شده در runtime (http://barnamenevis.org/showpost.php?p=472650)

http://barnamenevis.org/images/statusicon/thread_new.gif کنترلهای سفارشی (Derived Controls, UserControls) :

تبدیل اتوماتیک دکمه Enter به Tab جهت انتقال فوکوس در کنترلها (http://barnamenevis.org/showpost.php?p=487777)
http://www.barnamenevis.org/images/icons/icon4.gif (http://barnamenevis.org/showpost.php?p=467339&postcount=5)حاشیه دار کردن کنترل TextBox با یک رنگ دلخواه (http://barnamenevis.org/showpost.php?p=467567&postcount=5)
http://www.barnamenevis.org/images/icons/icon4.gif (http://barnamenevis.org/showpost.php?p=467339&postcount=5) سفارشی کردن پیشفرض آیتمهای قابل اضافه شدن به یک کنترل در زمان طراحی (http://barnamenevis.org/showpost.php?p=484723)
http://www.barnamenevis.org/images/icons/icon3.gif تخصیص آیکن سفارشی به کامپوننتهای درون تولباکس (http://barnamenevis.org/showpost.php?p=492744)


http://barnamenevis.org/images/statusicon/thread_hot_new.gif کامپوننتها :

نحوه ی ایجاد و تخصیص ToolTip در زمان اجرا (http://barnamenevis.org/showpost.php?p=474728)
طریقه استفاده از کامپوننت timer (http://barnamenevis.org/showpost.php?p=493810)
طریقه ی استفاده از کامپوننت NotifyIcon (http://barnamenevis.org/showpost.php?p=475437)
آغاز کار با کامپوننت ErrorProvider (http://barnamenevis.org/showpost.php?p=478950)
http://www.barnamenevis.org/images/icons/icon2.gif آشنایی با BackgroundWorker و دستکاری عناصر UI (http://barnamenevis.org/showpost.php?p=483535)
http://www.barnamenevis.org/images/icons/icon2.gif آموزش کار کردن با BackgroundWorker بصورت آسان و قدم به قدم (http://barnamenevis.org/showpost.php?p=485225)





http://barnamenevis.org/images/statusicon/forum_new.gif آرایه ها و کالکشنها :
http://barnamenevis.org/images/statusicon/thread_new.gif آرایه ها :



انتقال آیتمهای یک آرایه از اعداد در یک لیست باکس (http://barnamenevis.org/showpost.php?p=467569&postcount=7)
روشهای Initialize کردن انواع آرایه ها (http://barnamenevis.org/showpost.php?p=469017&postcount=45)
برعکس کردن ترتیب آیتمهای یک آرایه (http://barnamenevis.org/showpost.php?p=478990)
مرتب سازی آیتمهای یک ارایه (http://barnamenevis.org/showpost.php?p=479229)

http://barnamenevis.org/images/statusicon/thread_new.gif کالکشن ها :

انتقال آیتمهای یک کالکشن به یک آرایه (http://barnamenevis.org/showpost.php?p=479244)
استفاده از متد Find در Generic List (http://barnamenevis.org/showpost.php?p=519237)
ساختن یک لیست ژنریک از اشیاء (http://barnamenevis.org/showpost.php?p=472644&postcount=117)
کالکشنهای معمولی در مقابل کالکشنهای ژنریک (http://barnamenevis.org/showpost.php?p=484125)





http://barnamenevis.org/images/statusicon/forum_new.gif دیتابیس و بانکهای اطلاعاتی :
http://barnamenevis.org/images/statusicon/thread_new.gif عملیات مرسوم با ADO.Net :



بدست آوردن لیست نمونه های SQL Server موجود در شبکه (http://barnamenevis.org/showpost.php?p=467590)
ساختن یک Connection با استفاده از ConnectionString موجود در فایل Configuration (http://barnamenevis.org/showpost.php?p=467918&postcount=28)
http://www.barnamenevis.org/images/icons/icon3.gif ساختن Connection String به روشی بسیار ساده (http://barnamenevis.org/showpost.php?p=490906)
انجام محاسبات بر روی یک فیلد از DataTable (http://barnamenevis.org/showpost.php?p=480829)
اتصال به SqlServer با استفاده از IP Address (http://barnamenevis.org/showpost.php?p=496141)
اتصال به بانکهای اطلاعاتی اوراکل در سی شارپ (http://barnamenevis.org/showpost.php?p=503941)



http://barnamenevis.org/images/statusicon/thread_new.gif کوئریها (SQL) :

برگرداندن تعدادی مشخص و اتفاقی از رکوردها بوسیله کوئری (http://barnamenevis.org/showpost.php?p=467774&postcount=21)
بدست آوردن آخرین Identity اضافه شده به جدول (http://barnamenevis.org/showpost.php?p=467790&postcount=25)
ریست کردن مقدار یک فیلد Identity در SQL Server (http://barnamenevis.org/showpost.php?p=479372)





http://barnamenevis.org/images/statusicon/forum_new.gif فایلها، استریمها (I/O) :
http://barnamenevis.org/images/statusicon/thread_new.gif فایلها :


گرفتن یک فایل از طریق دیالوگ OpenFileDialog و دستکاری نام فایل (http://barnamenevis.org/showpost.php?p=475428)
تغییر خواص یک فایل (http://barnamenevis.org/showpost.php?p=469393&postcount=59)
خواندن و نوشتن فایلهای متنی (http://barnamenevis.org/%C3%98%C2%AE%C3%99%C2%88%C3%98%C2%A7%C3%99%C2%86%C 3%98%C2%AF%C3%99%C2%86%20%C3%99%C2%88%20%C3%99%C2% 86%C3%99%C2%88%C3%98%C2%B4%C3%98%C2%AA%C3%99%C2%86 %20%C3%99%C2%81%C3%98%C2%A7%C3%9B%C2%8C%C3%99%C2%8 4%C3%99%C2%87%C3%98%C2%A7%C3%9B%C2%8C%20%C3%99%C2% 85%C3%98%C2%AA%C3%99%C2%86%C3%9B%C2%8C)
اضافه و جدا کردن نام فایل از مسیر کامل (http://barnamenevis.org/showpost.php?p=469397&postcount=62)
ایجاد یک نام تصادفی برای فایل (http://barnamenevis.org/showpost.php?p=469398&postcount=63)
خواندن و نوشتن فایل به صورت unicode با استفاده از richTextBox (http://barnamenevis.org/showpost.php?p=468822&postcount=39)
تغییر نام دادن (Rename) یک فایل (http://barnamenevis.org/showpost.php?p=479011)
خواندن خواص (Attribute) یک فایل (http://barnamenevis.org/showpost.php?p=479030)
دستکاری خواص (Attribute) یک فایل (http://barnamenevis.org/showpost.php?p=479031)
بافر و نشان دادن مقدار کپی شدن یه فایل (http://barnamenevis.org/showpost.php?p=480943)
اعمال محدودیت برای ذخیره فایل توسط کاربر (http://barnamenevis.org/showpost.php?p=482056)



http://barnamenevis.org/images/statusicon/thread_new.gif دایرکتوریها و درایوها :


انجام عملیات متداول روی فایلها و دایرکتوریها (http://barnamenevis.org/showpost.php?p=471273&postcount=84)
محاسبه ی حجم کلی یک دایرکتوری (http://barnamenevis.org/showpost.php?p=469394&postcount=60)
کپی کردن فایلهای درون یک دایرکتوری (فقط فایلها) (http://barnamenevis.org/showpost.php?p=471343&postcount=86)
کپی کامل یک دایرکتوری و تمامی زیرشاخه های آن بصورت بازگشتی (http://barnamenevis.org/showpost.php?p=471479&postcount=88)
انجام کارهای متداول روی درایوها (Partitions) (http://barnamenevis.org/showpost.php?p=475285)
معرفی روشی بهینه جهت بدست آوردن درخت کامل یک دایرکتوری (http://barnamenevis.org/showpost.php?p=479039)
تغییر نام دادن (Rename) یک دایرکتوری (http://barnamenevis.org/showpost.php?p=479028)
خواندن خواص (Attribute) یک دایرکتوری (http://barnamenevis.org/showpost.php?p=479025)
دستکاری خواص (Attribute) یک دایرکتوری (http://barnamenevis.org/showpost.php?p=479026)

http://barnamenevis.org/images/statusicon/thread_new.gif فشرده سازی :

تفاوت GZip و Deflate در فشرده کردن (http://barnamenevis.org/showpost.php?p=477983)

http://barnamenevis.org/images/statusicon/thread_new.gif سریالیزشین :


سریالیزشین چیست ؟ (http://barnamenevis.org/showpost.php?p=471589&postcount=89)
Serialize کردن باینری آبجکت در فایل (http://barnamenevis.org/showpost.php?p=472315&postcount=102)
DeSerialize کردن باینری آبجکت از فایل (http://barnamenevis.org/showpost.php?p=472615&postcount=112)
Serialize کردن object در XML (http://barnamenevis.org/showpost.php?p=472343&postcount=105)
DeSerialize کردن object از XML (http://barnamenevis.org/showpost.php?p=472347&postcount=106)
Serialize کردن object در SOAP XML (http://barnamenevis.org/showpost.php?p=472352&postcount=107)
DeSerialize کردن object از SOAP XML (http://barnamenevis.org/showpost.php?p=472353&postcount=108)
یک کلاس ژنریک برای سریالایز و دیسریالایز کردن به شکل XML (http://barnamenevis.org/showpost.php?p=483299)

sinpin
پنج شنبه 25 بهمن 1386, 10:27 صبح
http://jimwhimpey.com/blog/wp-content/uploads/dictionarysmaller.png



http://barnamenevis.org/images/statusicon/forum_new.gif گرافیک : GDI, GDI+, DirectX, OpenGL
http://barnamenevis.org/images/statusicon/thread_new.gif گرافیک :




ایجاد تصاویر Bitmap در زمان اجرا (http://barnamenevis.org/showpost.php?p=469022&postcount=46)
ایجاد تصویر Bitmap در زمان اجرا (روش دوم) (http://barnamenevis.org/showpost.php?p=498570)
رسم یک چندضلعی توپر روی یک فرم (http://barnamenevis.org/showpost.php?p=467572&postcount=9)
خواندن و نوشتن رنگ یک پیکسل به کمک توابع API (http://barnamenevis.org/showpost.php?p=472144&postcount=91)
خواندن و نوشتن رنگ یک پیکسل به کمک کلاس Bitmap (http://barnamenevis.org/showpost.php?p=472150&postcount=92)
کشیدن نقاشی با توابع ساده گرافیکی و ذخیره خروجی در یک فایل (http://barnamenevis.org/showpost.php?p=467581&postcount=10)
http://www.barnamenevis.org/images/icons/icon2.gif سیاه و سفید کردن عکس با کد نویسی (http://barnamenevis.org/showpost.php?p=471151&postcount=81)
Resize کردن یک تصویر با کدنویسی (http://barnamenevis.org/showpost.php?p=472253&postcount=94)
Crop کردن یک تصویر (یک برش مستطیلی از تصویر) (http://barnamenevis.org/showpost.php?p=472259&postcount=95)
تبدیل یک تصویر رنگی به معادل GrayScal آن (http://barnamenevis.org/showpost.php?p=472269&postcount=96)
چرخاندن یک تصویر با زاویه دلخواه (http://barnamenevis.org/showpost.php?p=472283&postcount=100)
ترسیم یک نوشته در مرکز یک کنترل (http://barnamenevis.org/showpost.php?p=485171)
بهبود رسم شکلها با روانسازی منحنیها و زاویه ها (http://barnamenevis.org/showpost.php?p=485172)
رسم یک Button (در حالتهای مختلف) به کمک +GDI (http://barnamenevis.org/showpost.php?p=485173)
ترسیم برخی دکمه های ویژه به کمک +GDI (http://barnamenevis.org/showpost.php?p=485175)
ترسیم انواع چک باکس ها به کمک +GDI (http://barnamenevis.org/showpost.php?p=485176)
ترسیم انواع border های 3 بعدی به کمک +GDI (http://barnamenevis.org/showpost.php?p=485177)
ترسیم و نوشتن مستقیم بر دسکتاپ ویندوز (http://barnamenevis.org/showpost.php?p=485391)
ایجاد فرمهایی با اشکال غیرمستطیلی (http://barnamenevis.org/showpost.php?p=467954)
گرفتن و تسخیر کردن (Capture) تصویر صفحه نمایش (http://barnamenevis.org/showpost.php?p=469378&postcount=54)
ایجاد طیف رنگ (Gradient) بعنوان پشت زمینه ی کنترلها (http://barnamenevis.org/showpost.php?p=468043&postcount=35)
کشیدن لایه شفاف با رنگ دلخواه بر روی عکس (http://barnamenevis.org/showpost.php?p=492709)
سایه دار کردن یک فرم (http://barnamenevis.org/showpost.php?p=494845)
برنامه ای مشابه ColorBalance فوتوشاپ (http://barnamenevis.org/showpost.php?p=495627)
پر کردن یک listbox از رنگهای سیستمی (http://barnamenevis.org/showpost.php?p=497992)
آشنایی با کلاس hatchBrush (http://barnamenevis.org/showpost.php?p=503272)
تغییر دادن میزان تفکیک پذیری (Resulation) صفحه نمایش (http://barnamenevis.org/showpost.php?p=503587)
ایجاد طیف رنگ با بیش از دو رنگ توسط ColorBlend (http://barnamenevis.org/showpost.php?p=501928)




http://barnamenevis.org/images/statusicon/forum_new.gif مالتی مدیا :

http://barnamenevis.org/images/statusicon/thread_new.gif صدا و تصویر:


نواختن یک فایل صوتی با فرمت Wave (http://barnamenevis.org/showpost.php?p=469385&postcount=56)
پخش کردن برخی از صوتهای سیستمی تنها با یک خط! (http://barnamenevis.org/showpost.php?p=469379&postcount=55)
پخش فایل صوتی موجود در Resource (http://barnamenevis.org/showpost.php?p=529227)
Concatenating Wave ، اتصال فایلهای Wave (http://barnamenevis.org/showpost.php?p=520682)
ضبط (ركورد) صدا از طريق ميكروفون (http://barnamenevis.org/showpost.php?p=506994)
پخش فایلهای صوتی و ویدیویی با کمک winmm.dll (http://barnamenevis.org/showpost.php?p=475207)




http://barnamenevis.org/images/statusicon/forum_new.gif نکات سیستمی :

http://barnamenevis.org/images/statusicon/thread_new.gif عملیات قابل انجام توسط توابع API و سایر کتابخانه های سیستمی :




تغییر زبان پیشفرض ویندوز بصورت داینامیک در برنامه (http://barnamenevis.org/showpost.php?p=468038)
قفل کردن کامپیوتر از طریق کدنویسی (http://barnamenevis.org/showpost.php?p=467608)
Shutdown، Restart و Logoff کردن یک کامپیوتر بوسیله کد (http://barnamenevis.org/showpost.php?p=467612)
خالی کردن سطل بازیافت ویندوز (ResycleBin) (http://barnamenevis.org/showpost.php?p=481511)
باز و بسته کردن درایو CD-ROM (http://barnamenevis.org/showpost.php?p=481502)
تغییر دادن رنگ متن در Console Application (http://barnamenevis.org/showpost.php?p=481501)
بدست آوردن Handle و عنوان پنجره ی فعال جاری (http://barnamenevis.org/showpost.php?p=482429)
عوض کردن تصویر پشت زمینه desktop با کدنویسی (http://barnamenevis.org/showpost.php?p=482914)
بدست آوردن اطلاعاتی از نسخه ویندوز موجود بوسیله توابع API (http://barnamenevis.org/showpost.php?p=482432)
بدست آوردن Handle تمامی پنجره های موجود در سیستم (http://barnamenevis.org/showpost.php?p=482434)
تغییر زمان و تاریخ سیستم بوسیله کدنویسی (http://barnamenevis.org/showpost.php?p=483047)
شبيه سازي عمل كليك ماوس روي يك كنترل با كدنويسي (http://barnamenevis.org/showpost.php?p=507100)
بررسی اتصال به اینترنت Dial up و ADSL از طریق API (http://barnamenevis.org/showpost.php?p=504291)
تست ارتباط با اينترنت از طريق پينگ كردن (check internet connection by ping a website)
(http://barnamenevis.org/showthread.php?95001&p=550644)
تشخیص روشن بودن Caps Lock و Num Lock (http://barnamenevis.org/showpost.php?p=505428)

http://barnamenevis.org/images/statusicon/thread_new.gif عملیات قابل انجام توسط دستورات خط فرمان :

Hibernate و Standby کردن کامپیوتر (http://barnamenevis.org/showpost.php?p=467605)
http://www.barnamenevis.org/images/icons/icon6.gif قطع کردن اتصال اینترنت دایل آپ از طریق دستورات خط فرمان (http://barnamenevis.org/showpost.php?p=468034)

http://barnamenevis.org/images/statusicon/thread_new.gif عملیات قابل انجام توسط WMI :


بدست آوردن شماره سریال پراسسور (CPU Id) (http://barnamenevis.org/showpost.php?p=472611)
بدست آوردن نام شرکت سازنده پراسسور (CPU Manufacturer) (http://barnamenevis.org/showpost.php?p=472619&postcount=113)
بدست آوردن میزان فضای خالی یک درایو (پارتیشن) (http://barnamenevis.org/showpost.php?p=472621&postcount=114)
بدست آوردن حجم کلی یک درایو (پارتیشن) (http://barnamenevis.org/showpost.php?p=472622&postcount=115)
یافتن MAC آدرس کارت شبکه (http://barnamenevis.org/showpost.php?p=469293&postcount=49)
یافتن شماره سریال و مدل تمامی هارددیسکهای موجود در یک سیستم (http://barnamenevis.org/showpost.php?p=468982&postcount=41)
بدست آوردن لیست چاپگرهای نصب شده در یک سیستم (http://barnamenevis.org/showpost.php?p=469387&postcount=57)

http://barnamenevis.org/images/statusicon/thread_new.gif عملیات متداول و ویژه :


ايجاد سايز سفارشي كاغذ براي چاپگر در سي شارپ (http://barnamenevis.org/showpost.php?p=537050)
بدست آوردن مسیر دایرکتوری جاری برنامه (http://barnamenevis.org/showpost.php?p=467768&postcount=20)
فرستادن پارامتر به برنامه email ویندوز (http://barnamenevis.org/showpost.php?p=526193)
ساختن یک سند word و باز کردن آن در MSWord (http://barnamenevis.org/showpost.php?p=482437)
قرار دادن شورتکات یک برنامه بر روی Desktop و Start Menu (http://barnamenevis.org/showpost.php?p=482414)
بدست آوردن مسیر فولدرهای ویژه (http://barnamenevis.org/showpost.php?p=468440&postcount=38)
بدست آوردن نام سیستم لوکال (http://barnamenevis.org/showpost.php?p=480036)
بدست آوردن ميزان زمان روشن بودن كامپيوتر
(http://barnamenevis.org/showthread.php?&p=550652)
بدست آوردن اطلاعاتی در مورد ماوس (http://barnamenevis.org/showpost.php?p=492156)



بدست آوردن مدت زمان بیکاری سیستم (http://barnamenevis.org/showpost.php?p=496146)
بدست آوردن لیست تمامی فونتهای نصب شده در سیستم (http://barnamenevis.org/showpost.php?p=480431)
بدست آوردن نام کامپیوتر، نام کاربر جاری و ... (بوسیله کلاس Environment) (http://barnamenevis.org/showpost.php?p=475438)
بدست آوردن اطلاعاتی در مورد OS و CLR (http://barnamenevis.org/showpost.php?p=482422)
دسترسي به پيكره بندي سيستم در CRL (http://barnamenevis.org/showpost.php?p=532180)

http://barnamenevis.org/images/statusicon/thread_new.gif رجیستری ویندوز و EventLog:




افزودن و حذف کردن یک برنامه به StartUp ویندوز از طریق کلیدهای رجیستری (http://barnamenevis.org/showpost.php?p=467595&postcount=13)
بدست آوردن ليست برنامه هاي نصب شده بر روي سيستم
(http://barnamenevis.org/showthread.php?95001&p=550638)
معرفی کلاسی با سه متود برای جستجو در EventLog (http://barnamenevis.org/showpost.php?p=485214)
انجام عملیات متداول در رجیستری ویندوز (http://barnamenevis.org/showpost.php?p=472244&postcount=93)
افزودن یک زیرمنو و دستور دلخواه به context menu ویندوز اکسپلورر (http://barnamenevis.org/showpost.php?p=473506&postcount=129)
کار کردن با کلاس EventLog (http://barnamenevis.org/showpost.php?p=473441&postcount=127)
نوشتن در EvenLog (http://barnamenevis.org/showpost.php?p=516676)

http://barnamenevis.org/images/statusicon/thread_new.gif پروسه ها :

بستن یک پروسه در حال اجرا (http://barnamenevis.org/showpost.php?p=467764&postcount=18)
http://www.barnamenevis.org/images/icons/icon6.gif (http://barnamenevis.org/showpost.php?p=468034&postcount=33)نمایش تصاویر در Windows picture and fax viewer از طریق کدنویسی (http://barnamenevis.org/showpost.php?p=469320&postcount=50)
محاسبه زمان اجرای قسمتی برنامه (http://barnamenevis.org/showpost.php?p=493800)
بدست آوردن خروجی دستورهای خط فرمان (http://barnamenevis.org/showpost.php?p=476985)
Map کردن درایوهای شبکه به کمک دستورات خط فرمان (http://barnamenevis.org/showpost.php?p=476988)
اجرا کردن یک فایل اجرایی با کدنویسی (http://barnamenevis.org/showpost.php?p=469007&postcount=43)
فقط یک نمونه از برنامه بتواند اجرا شود (با استفاده از Mutex) (http://barnamenevis.org/showpost.php?p=473313&postcount=125)
فقط یک نمونه از برنامه بتواند اجرا شود (با استفاده از Process) (http://barnamenevis.org/showpost.php?p=470337&postcount=71)
فقط یک نمونه از برنامه بتواند اجرا شود (با استفاده از WMI) (http://barnamenevis.org/showpost.php?p=482919)
بدست آوردن جزییات اطلاعات در مورد یک پروسه در حال اجرا (http://barnamenevis.org/showpost.php?p=473453&postcount=128)
restart کردن (بستن و مجددا اجرا کردن) برنامه (http://barnamenevis.org/showpost.php?p=470320&postcount=69)
ساده ترین راه برای جلوگیری از Not Respond شدن برنامه در حلقه های طولانی (http://barnamenevis.org/showpost.php?p=470328&postcount=70)
باز کردن یک سایت توسط internet explorer (http://barnamenevis.org/showpost.php?p=469410&postcount=64)



http://barnamenevis.org/images/statusicon/thread_new.gif سرویسهای ویندوز :


بزودی...




http://barnamenevis.org/images/statusicon/forum_new.gif توزیع و Setup سازی:

http://barnamenevis.org/images/statusicon/thread_new.gif توزیع برنامه :


بزودی...



http://barnamenevis.org/images/statusicon/thread_new.gif توزیع دیتابیس :



روش نصب MSDE همراه با برنامه (http://barnamenevis.org/showpost.php?p=469035&postcount=48)


http://barnamenevis.org/images/statusicon/thread_new.gif توزیع گزارشات کریستال ریپورت :


بزودی...




http://barnamenevis.org/images/statusicon/forum_new.gif اینترنت، شبکه، ... :


ارسال متغیر به صفحه بعد با استفاده از url (http://barnamenevis.org/showpost.php?p=474150)
Auto Intellisense در web.config (http://barnamenevis.org/showpost.php?p=472339&postcount=104)
Ping کردن یک کامپیوتر تحت شبکه (http://barnamenevis.org/showpost.php?p=467766&postcount=19)
روش ارسال ایمیل به چندین گیرنده (http://barnamenevis.org/showpost.php?p=471091&postcount=78)
تبدیل یک IP به HostName و بلعکس (http://barnamenevis.org/showpost.php?p=479018)
بدست آوردن لیست IP های یک سیستم (http://barnamenevis.org/showpost.php?p=480028)
بدست آوردن اطلاعاتی (مانند: سرعت، نوع و ...) از کانکشنهای شبکه ای موجود لوکال (http://barnamenevis.org/showpost.php?p=482440)
آیا کاربر جاری Administrator هست؟ (http://barnamenevis.org/showpost.php?p=475819)
به دست آوردن لیست کاربران یک گروه خاص در سیستم (http://barnamenevis.org/showpost.php?p=475812)
برقراری ارتباط تلفنی (Dial up) توسط TAPI32 (http://barnamenevis.org/showpost.php?p=480832)




http://barnamenevis.org/images/statusicon/forum_new.gif مباحث مختص دات نت فریمورک 3.0 و 3.5 :

http://barnamenevis.org/images/statusicon/thread_new.gif نوآوری ها :

http://www.barnamenevis.org/images/icons/icon1.gifمباحث اولیه :


تعریف یک متغیر بدون تعیین کردن نوع آن در دات نت فریمورک 3.0 به بعد (http://barnamenevis.org/showpost.php?p=470809&postcount=74)
Initilize کردن کالکشنها در دات نت 3.0 به بالا (http://barnamenevis.org/showpost.php?p=470917&postcount=76)
متودهای گسترش (Extension Methods) (http://barnamenevis.org/showpost.php?p=470951&postcount=77)
پراپرتی های اتوماتیک (Automatic Properties) در دات نت 3.0 (http://barnamenevis.org/showpost.php?p=470792&postcount=72)
عدم نیاز به نوشتن انواع توابع سازنده (ctor) در دات نت فریمورک 3.0 به بعد (http://barnamenevis.org/showpost.php?p=470798&postcount=73)

LINQ http://www.barnamenevis.org/images/icons/icon1.gif

شروع آشنایی با LINQ بصورت ساده (http://barnamenevis.org/showpost.php?p=470827&postcount=75)
پیدا کردن آتمی در یک مجموعه با استفاده از عبارت where در LINQ
(http://barnamenevis.org/showthread.php?95001&p=545661)

WPFhttp://www.barnamenevis.org/images/icons/icon1.gif :






http://www.barnamenevis.org/images/icons/icon3.gif (http://barnamenevis.org/showpost.php?p=471347&postcount=87)(Windows Presentation Foundation (WPF چیست ؟ (http://barnamenevis.org/showpost.php?p=471347&postcount=87)


http://barnamenevis.org/images/statusicon/thread_new.gif سایر مباحث :

بدست آوردن لیست تمامی ناحیه های زمانی (Time Zone) (http://barnamenevis.org/showpost.php?p=471161&postcount=83)
کار کردن با کلاس TimeZoneInfo (http://barnamenevis.org/showpost.php?p=471160&postcount=82)




http://barnamenevis.org/images/statusicon/forum_new.gif میانبرها و ترفندهای IDE :

http://www.barnamenevis.org/images/icons/icon3.gif (http://barnamenevis.org/showpost.php?p=467914&postcount=27) معرفی میانبرهای متداول در کدنویسی (http://barnamenevis.org/showpost.php?p=470176&postcount=67)
Override كردن توابع از طريق snnipet ها (http://barnamenevis.org/showpost.php?p=515278)
http://www.barnamenevis.org/images/icons/icon3.gif using کردن یک namespace (http://barnamenevis.org/showpost.php?p=467914&postcount=27)
http://www.barnamenevis.org/images/icons/icon3.gif معرفی چند snippet متداول جهت سرعت بخشیدن به کدنویسی (http://barnamenevis.org/showpost.php?p=467937&postcount=31)
http://www.barnamenevis.org/images/icons/icon3.gif اصلاح تورفتگی های پیشفرض محیط ادیتور (http://barnamenevis.org/showpost.php?p=472996&postcount=123)
http://www.barnamenevis.org/images/icons/icon3.gif ایجاد کردن یک Property (http://barnamenevis.org/showpost.php?p=467912&postcount=26)
http://www.barnamenevis.org/images/icons/icon3.gif (http://barnamenevis.org/showpost.php?p=468395&postcount=37)تغییر رنگها و شمای محیط کدنویسی ویژوال استادیو (http://barnamenevis.org/showpost.php?p=468395&postcount=37)
غیر قابل کامپایل کردن بخشی از یک پروژه بصورت موقت (http://barnamenevis.org/showpost.php?p=495049)



http://barnamenevis.org/images/statusicon/forum_new.gif معرفیها :

http://barnamenevis.org/images/statusicon/thread_new.gif معرفی ابزار سودمند :


معرفی NDoc : ابزاری رایگان و کارآمد برای تولید مستندات (http://barnamenevis.org/showpost.php?p=482893)
معرفی CodeSmith : ابزاری جهت ساخت قالب و تولید کد (http://barnamenevis.org/showpost.php?p=482900)
معرفی netTiers : مجموعه ای بی نظیر و رایگان از قالبهای آماده جهت تولید کد (http://barnamenevis.org/showpost.php?p=482911)
معرفی GhostDoc : ابزاری رایگان برای تولید اتوماتیک XML Comments در کدنویسی (http://barnamenevis.org/showpost.php?p=483063)
معرفی NET Reflector. : ابزاری رایگان جهت آنالیز و decompile کردن اسمبلیها (http://barnamenevis.org/showpost.php?p=483247)
معرفیNET Obfuscator. : ابزاری جهت محافظت از اسمبلیها (http://barnamenevis.org/showpost.php?p=483267)
معرفی NHibernate : ابزاری رایگان و کارآمد جهت نگاشت مدل آبجکتیو به رابطه ای (http://barnamenevis.org/showpost.php?p=483254)
معرفی SharpDevelop : یک IDE سورس باز برای #C و VB.net (http://barnamenevis.org/showpost.php?p=474595)
MonoDevelop یک IDE سورس باز در لینوکس (http://barnamenevis.org/showpost.php?p=475224)
The Code Project Browser Add-in For VS 2005 And 2008 (http://barnamenevis.org/showpost.php?p=496587)

http://barnamenevis.org/images/statusicon/thread_new.gif معرفی سایتهای مفید :

معرفی یک Object Browser آنلاین (http://barnamenevis.org/showpost.php?p=474581)
معرفی یک لینک برای مشاهده ی انواع ConnectionString ها (http://barnamenevis.org/showpost.php?p=479384)
معرفی سایتهایی جهت دریافت آیکن رایگان (http://barnamenevis.org/showpost.php?p=480627)
چند تا برنامه رایگان و مفید (http://barnamenevis.org/showpost.php?p=475555)
معرفی لینک دانلود چند فیلم آموزشی ساده (http://barnamenevis.org/showpost.php?p=477198)
لیست تمامی Shortcut های Visual Studio 2005 & 2008 (http://barnamenevis.org/showpost.php?p=475807)
معرفی چند سایت جهت تبدیل کدهای #C و VB.net به یکدیگر (http://barnamenevis.org/showpost.php?p=474567)
معرفی لینکهای مفید در ارتباط با API های ویندوز (http://barnamenevis.org/showpost.php?p=483049)
معرفی چند لینک برای دریافت آموزشهای ویدئویی (http://barnamenevis.org/showpost.php?p=503340)

http://barnamenevis.org/images/statusicon/thread_new.gif معرفی کتابها و سایر مطالب آموزشی :


معرفی لینکهای مفید جهت آموزش سریع UML تنها با یک نگاه! (http://barnamenevis.org/showpost.php?p=483057)
معرفی لینک دانلود سورس کدهای برخی انتشارات (http://barnamenevis.org/showpost.php?p=482164)

sinpin
پنج شنبه 25 بهمن 1386, 10:52 صبح
دوستان لطفا از طریق پیامهای شخصی من رو در تکمیل این بخش یاری کنید :
روش استفاده از SQL Command (http://barnamenevis.org/forum/showthread.php?t=94296)
#C یا VB.NET ، مسئله این است!!! (http://barnamenevis.org/forum/showthread.php?t=6481)
اتصال به اسکنر و اسکن عکس و ثبت ان (http://barnamenevis.org/forum/showthread.php?t=88231)
نحوه استفاده ازTAPIبرای ایجاد برنامه تلفن سخنگو (گ و ی ا) (http://barnamenevis.org/forum/showthread.php?t=83065)
نیاز به توابع تاریخ شمسی در سی شارپ (http://barnamenevis.org/forum/showthread.php?t=1575)
مقالات سی شارپ به صورت pdf (http://barnamenevis.org/forum/showthread.php?t=12018)
نمونه برنامه های C#.NET (http://barnamenevis.org/forum/showthread.php?t=64210)
مراجع #C - فارسی و انگلیسی (http://barnamenevis.org/forum/showthread.php?t=51504)
تاپیک های مهم و مسائل حل شده این بخش (http://barnamenevis.org/forum/showthread.php?t=40585)
خانمها، آقایان این شما و این هم تقویم فارسی مایکروسافت (http://barnamenevis.org/forum/showthread.php?t=32369)
اگوریتم و کد تبدیل تاریخ میلادی به شمسی (http://barnamenevis.org/forum/showthread.php?t=92472)
آموزش : نحوه ی کنترل کردن فرمها و مشکلات متداول (http://barnamenevis.org/forum/showthread.php?t=90581)
برنامه نویسی لایه ای (http://barnamenevis.org/forum/showthread.php?t=69806)
آشنایی با الگوهای طراحی - Design Pattern (http://barnamenevis.org/forum/showthread.php?t=99235)
برنامه نویسی شبکه در دات نت - قسمت اول (http://barnamenevis.org/forum/showthread.php?t=21010)
فارسی کردن اعداد در textbox (http://barnamenevis.org/forum/showthread.php?t=76198)
اجرای فایل برنامه بدون دات نت (http://barnamenevis.org/forum/showthread.php?t=59783)
مخفی نمودن DLL ها (http://barnamenevis.org/forum/showthread.php?t=84508)
ساخت user control برای login به فرم اصلی برنامه (http://barnamenevis.org/forum/showthread.php?t=94791)این لیست به مرور تکمیلتر (و نیز دسته بندی) خواهد شد

sinpin
پنج شنبه 25 بهمن 1386, 11:03 صبح
در کلاس 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
پنج شنبه 25 بهمن 1386, 11:58 صبح
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 به آبجکت فعلی از فرم اشاره دارد.

az_farzaneh
پنج شنبه 25 بهمن 1386, 12:11 عصر
int[] numbers = { 12, 23, 34, 45, 56, 67 };
Object[] oNumbers = new Object[numbers.Length];
numbers.CopyTo(oNumbers, 0);
listBox1.Items.AddRange(oNumbers);

sinpin
پنج شنبه 25 بهمن 1386, 19:16 عصر
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 (http://www.dofactory.com/Patterns/PatternSingleton.aspx)

sinpin
پنج شنبه 25 بهمن 1386, 20:25 عصر
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
پنج شنبه 25 بهمن 1386, 20:49 عصر
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
پنج شنبه 25 بهمن 1386, 21:04 عصر
using System.Data.Sql;

private void ShowSQLServerInstances()
{
SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
System.Data.DataTable table = instance.GetDataSources();
dataGridView1.DataSource = (table);
}

sinpin
پنج شنبه 25 بهمن 1386, 21:12 عصر
using Microsoft.Win32;

private void AddStartUpKey(string _name, string _path)
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
key.SetValue(_name, _path);
}

private void RemoveStartUpKey(string _name)
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true);
key.DeleteValue(_name, false);
}

sinpin
پنج شنبه 25 بهمن 1386, 21:24 عصر
// Hibernate
Application.SetSuspendState(PowerState.Hibernate, true, true);

// Standby
Application.SetSuspendState(PowerState.Suspend, true, true);

sinpin
پنج شنبه 25 بهمن 1386, 21:29 عصر
[DllImport("user32.dll")]
public static extern void LockWorkStation()

// Lock workstation
LockWorkStation();

sinpin
پنج شنبه 25 بهمن 1386, 21:31 عصر
ایجاد شفافیت کامل پشت زمینه ی یک کنترل :

control.BackColor = Color.Transparent;تعیین میزان شفافیت یک کنترل:

control.BackColor = Color.FromArgb(trancparency, control.BackColor);در کد بالا مقدار trancparency از 0 (برای کاملا شفاف) تا 255 (کاملا کدر) قابل تغییر است.

مثال : یک Label با شفافیت 50%

label1.BackColor = Color.FromArgb(127, label1.BackColor);

sinpin
پنج شنبه 25 بهمن 1386, 21:32 عصر
[DllImport("user32.dll")]
public static extern int ExitWindowsEx(int uFlags, int dwReason);

// Log Off
ExitWindowsEx(0, 0);

// Reboot
ExitWindowsEx(2, 0);

// Shutdown
ExitWindowsEx(1, 0);

// Force LogOff
ExitWindowsEx(4, 0);
و یا:

// Log Off
System.Diagnostics.Process.Start("ShutDown", "/l");

// Reboot
System.Diagnostics.Process.Start("ShutDown", "/r");

// Shutdown
System.Diagnostics.Process.Start("ShutDown", "/s");

sinpin
جمعه 26 بهمن 1386, 09:33 صبح
مثال : بستن notepad

using System.Diagnostics;

foreach (Process p in Process.GetProcesses())
{
if (p.ProcessName.ToLower() == "notepad")
p.Kill();
}و یا :

System.Diagnostics.Process.Start("TaskKill", "/f /im Notepad.exe /t");

sinpin
جمعه 26 بهمن 1386, 09:40 صبح
using System.Net.NetworkInformation;
private void button2_Click(object sender, EventArgs e)
{
string remoteMachineNameOrIP = "127.0.0.1";
int timeOut = 5;
Ping ping = new Ping();
// Pinging remote maching
PingReply reply = ping.Send(remoteMachineNameOrIP, timeOut);
// Displaying the result
StringBuilder sb = new StringBuilder();
sb.Append("Address:" + reply.Address.ToString());
sb.Append("\nStatus:" + reply.Status.ToString());
sb.Append("\nRoundtripTime:" + reply.RoundtripTime.ToString());
MessageBox.Show(sb.ToString(), "Ping Result: " + remoteMachineNameOrIP);
}منبع : http://www.dotnetspider.com/code/C-245-Ping-remote-computer-network.aspx (http://www.dotnetspider.com/code/C-245-Ping-remote-computer-network.aspx)

sinpin
جمعه 26 بهمن 1386, 09:49 صبح
MessageBox.Show(AppDomain.CurrentDomain.BaseDirect ory);یا :

MessageBox.Show(System.IO.Directory.GetCurrentDire ctory());یا :

MessageBox.Show(Application.StartupPath);یا:

MessageBox.Show(System.IO.Path.GetDirectoryName(Ap plication.ExecutablePath));

sinpin
جمعه 26 بهمن 1386, 10:07 صبح
مثال : برگرداندن 10 رکورد تصادفی از جدول myTable

SELECT TOP 10 id,title
FROM myTable
ORDER BY NEWID()

sinpin
جمعه 26 بهمن 1386, 10:33 صبح
کاربرد : زمانی که نمیتوان از یک الگوریتم بازگشتی استفاده کرد؛ برای مثال کنترلها در Container های متفاوتی هستند و تنها تعداد خاصی از آنها باید Clear شوند.

public void ClearControls(params Control[] ctls)
{
foreach (Control ct in ctls)
ct.Text = "";
}

private void button1_Click(object sender, EventArgs e)
{
ClearControls(textBox1, textBox2, comboBox1);
}

sinpin
جمعه 26 بهمن 1386, 10:37 صبح
استفاده از کرسرهای پیشفرض محیط :

button1.Cursor = Cursors.Hand;
لود کردن یک کرسر سفارشی از فایل :

button1.Cursor = new Cursor(@"C:\WINDOWS\Cursors\hibeam.cur");

sinpin
جمعه 26 بهمن 1386, 10:38 صبح
public void ClearControls(Control _parent)
{
if (!_parent.HasChildren)
_parent.Text = "";
foreach (Control ct in _parent.Controls)
ClearControls(ct);
}

private void button1_Click(object sender, EventArgs e)
{
ClearControls(this);
}

sinpin
جمعه 26 بهمن 1386, 10:46 صبح
INSERT INTO Sales.Customer ([TerritoryID],[CustomerType]) VALUES (8,'S')
GO
SELECT SCOPE_IDENTITY()

Masoud_TB
جمعه 26 بهمن 1386, 14:27 عصر
برای اینکه خیلی سریع یک Property ایجاد کنی کافیه که کلمه prop رو تایپ کنین و دوباره Tab بزنین. بعد نوع داده ای , نام متغییر private و در نهایت نام Propety مورد نظرتون. با تایپ کردن 5 کلمه Property تون آمادست.

Masoud_TB
جمعه 26 بهمن 1386, 14:29 عصر
وقتی نام کلاسی رو می نویسین و می دونین که باید ازش using کنین کافیه که بعد تایپ کردن اسمش Alt + Shift + F10 و بعد Enter رو بزنین خودش براتون using رو اضافه می کنه!

Masoud_TB
جمعه 26 بهمن 1386, 14:33 عصر
برای خواندن ConnectionString ی که در فایل app.config قرار داده شده کافیه و ایجاد یک SqlConnection کافیه کد زیر را تایپ کنین:



SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["myConnection"].ConnectionString);

Masoud_TB
جمعه 26 بهمن 1386, 14:38 عصر
برای Encrypt کردن قسمت ConnectionStrings فایل web.config یا app.Config از کد زیر استفاده می کنیم:

App.Config


Configuration config = ConfigurationManager.OpenExeConfiguration(Configur ationUserLevel.None);
config.ConnectionStrings.SectionInformation.ForceS ave = true;
config.ConnectionStrings.SectionInformation.Protec tSection("RsaProtectedConfigurationProvider");
config.Save();


Web.Config


Configuration config = WebConfigurationManager.OpenWebConfiguration("myWebSite");
config.ConnectionStrings.SectionInformation.ForceS ave = true;
config.ConnectionStrings.SectionInformation.Protec tSection("RsaProtectedConfigurationProvider");
config.Save();

Masoud_TB
جمعه 26 بهمن 1386, 14:40 عصر
برای Decrypt کردن محتویات ConnectionString داخل فایل های Config از کد های زیر استفاده می کنیم:

برای App.Config


Configuration config = ConfigurationManager.OpenExeConfiguration(Configur ationUserLevel.None);
config.ConnectionStrings.SectionInformation.ForceS ave = true;
config.ConnectionStrings.SectionInformation.Unprot ectSection();
config.Save();
برای Web.Config


Configuration config = WebConfigurationManager.OpenWebConfiguration("myWebSite");
config.ConnectionStrings.SectionInformation.ForceS ave = true;
config.ConnectionStrings.SectionInformation.Unprot ectSection();
config.Save();

sinpin
جمعه 26 بهمن 1386, 15:07 عصر
آشنایی با Snippet ها باعث سرعت شما در محیط کدنویسی میشود. برای استفاده کافیست بلافاصله بعد از نوشتن آنها (و بدون ایجاد فاصله) دوبار دکمه Tab را فشار دهید. (توضیحات بیشتر (http://blog.paranoidferret.com/index.php/2007/11/07/csharp-tutorial-visual-studio-code-snippets/))
در ادامه با چند اسنیپت متداول آشنا خواهید شد :

ایجاد یک ناحیه :‌
#regionایجاد MessageBox :

mboxایجاد Constructor برای کلاس :

ctorایجاد متود Main :

svmبرای ایجاد کلاسها، ایندکسر، استراکچر، ...
class, enum, struct, indexerبرای ایجاد انواع حلقه ها :
for
forr
foreach
while
doایجاد پراپرتی :
prop
propgدستورات شرطی :
if
else
switchو ...

روش دیگر افزودن :‌ روی یک قسمت خالی در محیط کدنویسی Right Click و سپس گزینه Insert Snippet رو انتخاب نمایید.
چنانچه کدی (مثلا 10 خط) نوشتید که میخواهید درون یک بلاک (حلقه، شرط و ...) قرار بگیره تمامی خطوط آن را Select و پس از Right Click گزینه Surround with رو انتخاب نمایید.

در لینک زیر نیز ضمن آشنایی با سایر موارد میتوانید snippet های مفید دیگری را نیز دانلود و به IDE خود بیفزایید.
لیست کامل سایر snippetها : http://msdn2.microsoft.com/en-us/vs2005/aa718338.aspx (http://msdn2.microsoft.com/en-us/vs2005/aa718338.aspx)

sinpin
جمعه 26 بهمن 1386, 15:47 عصر
ایجاد یک فرم دایره ای شکل :

private void Form1_Load(object sender, EventArgs e)
{
this.Height = 350;
this.Width = 350;
//Creating circle path
System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
path.AddEllipse(0, 0, 300, 300);
//Creating the region from the circle path
this.Region = new Region(path);
this.Show();
}منبع : http://www.dotnetspider.com/code/C-144-Create-Circle-shaped-Form-using-Regions.aspx (http://www.dotnetspider.com/code/C-144-Create-Circle-shaped-Form-using-Regions.aspx)

sinpin
جمعه 26 بهمن 1386, 20:40 عصر
System.Diagnostics.Process.Start("rasdial", "/disconnect");

sinpin
جمعه 26 بهمن 1386, 20:50 عصر
public struct LanguageHelper
{
public static void SetLanguage2English()
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("en-US"));
}

public static void SetLanguage2Farsi()
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("fa-IR"));
}
}

sinpin
جمعه 26 بهمن 1386, 20:57 عصر
using System.Drawing.Drawing2D;
using System.Drawing;

public void PaintGradient(Control _control, LinearGradientMode _direction, Color _gradientColorStart, Color _gradientColorEnd)
{
LinearGradientBrush gradBrush;
gradBrush = new LinearGradientBrush(new Rectangle(0, 0, _control.Width, _control.Height), _gradientColorStart, _gradientColorEnd, _direction);
Bitmap bmp = new Bitmap(_control.Width, _control.Height);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(gradBrush, new Rectangle(0, 0, _control.Width, _control.Height));
_control.BackgroundImage = bmp;
_control.BackgroundImageLayout = ImageLayout.Stretch;
}حال این متود رو در رخداد Paint کنترلهای دلخواه (فرم، دکمه، پنل ...) بنویسید :

private void Form1_Paint(object sender, PaintEventArgs e)
{
PaintGradient(this, LinearGradientMode.Vertical, Color.RoyalBlue, Color.DarkBlue);
}خصوصا ظاهر بهتر و مناسبتری برای دکمه های شما ایجاد میکند.

sinpin
جمعه 26 بهمن 1386, 21:16 عصر
با استفاده از پیاده سازی ژنریک الگوی سینگلتون :


public class SingletonProvider<T> where T : new()
{
SingletonProvider() { }

public static T Instance
{
get
{
return SingletonCreator.Instance;
}
}

class SingletonCreator
{
static SingletonCreator(){}
private static T instance;
public static T Instance
{
get
{
System.Windows.Forms.Form frm = instance as System.Windows.Forms.Form;
if (instance == null || frm.IsDisposed==true)
instance = new T();
return instance;
}
}
}
}و برای استفاده :
BoatForm boat = SingletonProvider<BoatForm>.Instance;

آموزش کامل این روش : http://barnamenevis.org/forum/showthread.php?t=90581

az_farzaneh
شنبه 27 بهمن 1386, 09:50 صبح
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Font = new Font(textBox1.Font, FontStyle.Bold | FontStyle.Italic | FontStyle.Underline);
}

sinpin
شنبه 27 بهمن 1386, 13:34 عصر
گاهی بد نیست برای تنوع هم که شده ظاهر محیط کدنویسی رو از حالت یکنواخت و سفید همیشگی تغییر بدیم.
اینکار رو میتونید خودتون بسادگی انجام بدید و راحتتر از اون اینکه فایل تنظیمات رو از سایر سایتها (مانند سایت زیر ) دانلود و استفاده کنید:‌
http://idehotornot.ning.com (http://idehotornot.ning.com/)
پس از دانلود فایل مورد نظر، جهت اعمال تغییرات در ویژوال استادیو مراحل زیر رو طی کنید :

Tools(menu)->Import and Export settings->Import...

sinpin
شنبه 27 بهمن 1386, 14:52 عصر
برای مثال :
string path = Environment.GetFolderPath(Environment.SpecialFolde r.ProgramFiles);سایر مسیرها قابل دستیابی با این روش :

Desktop, MyDocuments, System, ...بنقل از : http://barnamenevis.org/forum/showpost.php?p=468371&postcount=3 (http://barnamenevis.org/forum/showpost.php?p=468371&postcount=3)

az_farzaneh
یک شنبه 28 بهمن 1386, 09:27 صبح
// read text file
richTextBox1.LoadFile(@"C:\Log.txt", RichTextBoxStreamType.UnicodePlainText);
// save text file
richTextBox1.SaveFile(@"C:\Log.txt", RichTextBoxStreamType.UnicodePlainText);

sinpin
یک شنبه 28 بهمن 1386, 12:54 عصر
using System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern int ReleaseCapture();
[DllImport("user32.dll", EntryPoint = "SendMessageA")]
static extern int SendMessage(int hwnd, int wMsg, int wParam, object lParam);
private const int WM_NCLBUTTONDOWN = 161;

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle.ToInt32(), WM_NCLBUTTONDOWN, 2, 0);
}

sinpin
یک شنبه 28 بهمن 1386, 13:07 عصر
ابتدا System.Management رو به References پروژه بیفزایید و سپس :

using System.Management;

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

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

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

sinpin
یک شنبه 28 بهمن 1386, 13:39 عصر
int n = Convert.ToInt32(textBox1.Text); یا :

int n = Int32.Parse(textBox1.Text);و چنانچه امکان خطا باشد که تقریبا همیشه هست :

int n;
Int32.TryParse(textBox1.Text, out n);
در این حالت خروجی به n تخصیص داده میشود و چنانچه مشکلی رخ دهد n برابر صفر میشود.

sinpin
یک شنبه 28 بهمن 1386, 13:55 عصر
System.Diagnostics.Process.Start("mspaint.exe");
چنانچه فایل اجرایی نیاز به آرگومان خط فرمان داشته باشد :

System.Diagnostics.Process.Start("mspaint.exe", "c:\\Test.bmp");
مثال بالا تصویر Test را در msPaint باز میکند.

sinpin
یک شنبه 28 بهمن 1386, 14:00 عصر
string myString1 = "This is the first line of my string.\n" +
"This is the second line of my string.\n" +
"This is the third line of the string.\n";یا :

string myString2 = @"This is the first line of my string.
This is the second line of my string.
This is the third line of the string.";

sinpin
یک شنبه 28 بهمن 1386, 14:09 عصر
// Single-dimensional array (numbers).
int[] n1 = new int[4] {2, 4, 6, 8};
int[] n2 = new int[] {2, 4, 6, 8};
int[] n3 = {2, 4, 6, 8};
// Single-dimensional array (strings).
string[] s1 = new string[3] {"John", "Paul", "Mary"};
string[] s2 = new string[] {"John", "Paul", "Mary"};
string[] s3 = {"John", "Paul", "Mary"};
// Multidimensional array.
int[,] n4 = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
int[,] n5 = new int[,] { {1, 2}, {3, 4}, {5, 6} };
int[,] n6 = { {1, 2}, {3, 4}, {5, 6} };
// Jagged array.
int[][] n7 = new int[2][] { new int[] {2,4,6}, new int[] {1,3,5,7,9} };
int[][] n8 = new int[][] { new int[] {2,4,6}, new int[] {1,3,5,7,9} };
int[][] n9 = { new int[] {2,4,6}, new int[] {1,3,5,7,9} };

sinpin
یک شنبه 28 بهمن 1386, 14:21 عصر
private Image CreateBitmap()
{
System.Drawing.Bitmap flag = new System.Drawing.Bitmap(10, 10);
for (int x = 0; x < flag.Height; ++x)
for (int y = 0; y < flag.Width; ++y)
flag.SetPixel(x, y, Color.White);
for (int x = 0; x < flag.Height; ++x)
flag.SetPixel(x, x, Color.Red);
return flag;
}

private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = CreateBitmap();
}
منبع : http://msdn2.microsoft.com/en-us/library/aa287582(VS.71).aspx (http://msdn2.microsoft.com/en-us/library/aa287582%28VS.71%29.aspx)

sinpin
یک شنبه 28 بهمن 1386, 14:31 عصر
مثال: یک تکست باکس به فرم اضافه میکند:

private void button1_Click(object sender, System.EventArgs e)
{
TextBox myText = new TextBox();
myText.Location = new Point(25,25);
this.Controls.Add (myText);
}

sinpin
یک شنبه 28 بهمن 1386, 14:36 عصر
توصیحات رو سر فرصت اضافه میکنم. فعلا :
http://www.codeproject.com/KB/database/msdeinstaller.aspx?obid=12337&obtid=2&bmkResult=success

sinpin
یک شنبه 28 بهمن 1386, 21:59 عصر
ابتدا System.Management رو به References پروژه بیفزایید و سپس :

using System.Management;

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

sinpin
یک شنبه 28 بهمن 1386, 22:38 عصر
//Open with the 'Windows picture and fax viewer':
System.Diagnostics.Process.Start(@"C:\Windows\system32\rundll32.exe "
, @"C:\Windows\system32\shimgvw.dll,ImageView_Fullscre en " + filename);


اینهم که آسونه اما شاید واسه دوستانی مفید باشه :

//Open with the 'Microsoft Paint':
System.Diagnostics.Process.Start(@"C:\Windows\system32\MSPaint.exe "
, filename);

sinpin
دوشنبه 29 بهمن 1386, 00:13 صبح
مثال - برای آخرین آیتم :


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

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

sinpin
دوشنبه 29 بهمن 1386, 00:32 صبح
private void textBox_DragDrop(object sender, DragEventArgs e)
{
TextBox txt = (TextBox)sender;
txt.Text = (string)e.Data.GetData(DataFormats.Text);
}

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

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

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

sinpin
دوشنبه 29 بهمن 1386, 00:38 صبح
private void button1_Click(object sender, EventArgs e)
{
this.BackgroundImage= CaptureScreen();
}

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

sinpin
دوشنبه 29 بهمن 1386, 00:42 صبح
// Play a beep with default frequency
// and duration (800 and 200, respectively)
Console.Beep();

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

SystemSounds.Asterisk.Play();

SystemSounds.Hand.Play();

SystemSounds.Exclamation.Play();

SystemSounds.Beep.Play();

SystemSounds.Question.Play();

sinpin
دوشنبه 29 بهمن 1386, 00:53 صبح
using System.Media;


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

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

sinpin
دوشنبه 29 بهمن 1386, 01:05 صبح
using System.Drawing.Printing;

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

sinpin
دوشنبه 29 بهمن 1386, 01:17 صبح
// Create a TimeSpan representing 2.5 days.
TimeSpan timespan1 = new TimeSpan(2, 12, 0, 0);

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

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

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

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

// Create a DateTime representing 1 week in the future.
DateTime future = now + oneWeek;مثال :‌ پیدا کردن اختلاف تعداد روزهای بین دو تاریخ :

DateTime dateFrom = DateTime.Parse("10/10/2007");
DateTime dateTo = DateTime.Parse("11/12/2007");
TimeSpan ts = dateTo - dateFrom;
int days = ts.Days; و یا :

DateTime dtFirst = new DateTime(2007, 10, 10);
DateTime dtSecond = new DateTime(2007, 11, 12);
TimeSpan diffResult = dtSecond.Subtract(dtFirst);

sinpin
دوشنبه 29 بهمن 1386, 01:23 صبح
using System.IO;
مخفی و فقط خواندنی کردن یک فایل :

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

file.Attributes = file.Attributes & ~FileAttributes.ReadOnly;

sinpin
دوشنبه 29 بهمن 1386, 01:28 صبح
using System.IO;

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

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

sinpin
دوشنبه 29 بهمن 1386, 01:35 صبح
using System.IO;

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

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

sinpin
دوشنبه 29 بهمن 1386, 01:39 صبح
string filename = @"..\..\myfile.txt";
string fullPath = @"c:\Temp";
string filename = Path.GetFileName(filename);
string fullPath = Path.Combine(fullPath, filename);
// (fullPath is now "c:\Temp\myfile.txt")

sinpin
دوشنبه 29 بهمن 1386, 01:43 صبح
string randomFileName = System.IO.Path.GetRandomFileName();

و برای ایجاد نام منحصر بفرد برای فایلهای موقت :

string tfile = Path.GetTempFileName();

sinpin
دوشنبه 29 بهمن 1386, 02:54 صبح
System.Diagnostics.Process.Start("iexplore.exe", "www.barnamenevis.org");

و برای مثال در فایرفاکس :

System.Diagnostics.Process.Start("C:\Program Files\Mozilla Firefox\FireFox.exe", "www.barnamenevis.org");

az_farzaneh
دوشنبه 29 بهمن 1386, 09:13 صبح
public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
int x = (int) Days.Mon;

az_farzaneh
دوشنبه 29 بهمن 1386, 09:46 صبح
public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
System.Type t = typeof(Days);
foreach (string s in Enum.GetNames(t))
{
listBox1.Items.Add(s);
}

sinpin
سه شنبه 30 بهمن 1386, 10:25 صبح
عادت کردن به میانبرها میتواند سرعت کدنویسی شما را افزایش دهد :


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

sinpin
سه شنبه 30 بهمن 1386, 13:40 عصر
مثال :‌ تغییر رنگ پشت زمینه ی تمامی فرمهای باز در یک برنامه :

foreach (Form frm in Application.OpenForms)
frm.BackColor = Color.Fuchsia;

sinpin
سه شنبه 30 بهمن 1386, 13:42 عصر
private void button1_Click(object sender, EventArgs e)
{
Application.Restart();
}

sinpin
سه شنبه 30 بهمن 1386, 13:50 عصر
برنامه تمامی message های درون message queue فعلی (از قبیل رخدادها و ...) را پردازش میکند.

Application.DoEvents();یک مثال ساده :
محو شدن تدریجی یک فرم با تغییر دادن خاصیت Opacity (http://barnamenevis.org/forum/showpost.php?p=467568&postcount=6)

sinpin
سه شنبه 30 بهمن 1386, 14:02 عصر
using System.Diagnostics;این تغییرات را در کلاس مربوط به StartUp برنامه اعمال کنید :

static class Program
{
[STAThread]
static void Main()
{
if (IsPrevInstance())
return;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
}

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

sinpin
چهارشنبه 01 اسفند 1386, 10:49 صبح
به جای نوشتن :

private string userName;
public string UserName
{
get { return userName; }
set { userName = value; }
}میتوانید بنویسید :

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

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

sinpin
چهارشنبه 01 اسفند 1386, 10:56 صبح
فرض کنید کلاسی برای کاربران خود به این شکل تعریف کردید :

public class User
{
public string Password { get; set; }
public string UserName { get; set; }
public DateTime LastLogon { get; set; }
}حال در برنامه میتوانید به اشکال زیر آبجکت آن را مقدار دهی کنید :

User u1 = new User { UserName="sinpin", Password="123", LastLogon=DateTime.Now };

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

User u3 = new User { UserName = "sinpin" };
به همین منوال میتوانید برای هر کلاسی استفاده کنید. مثلا ساخت یک نمونه از Form2 با تغییر برخی مشخصات :

new Form2 { Text = "Test", BackColor = Color.Red }.Show();

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

sinpin
چهارشنبه 01 اسفند 1386, 11:19 صبح
Implicit typed local variables


با استفاده از کلمه کلیدی var :
برای مثال نوشتن :

var answer = 42;
var s = "this is a string.";
var names = new string[]{"Joe", "Bob", "Sam"};معادل است با :

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

اینها درست هستند :

var a = "See", b = "Spot", c = "run";
string[] names = new string[]{"Jim", "Joe", "Bob"};
var b = new[] {1, 2.0, 3.5, 4.75}; // double[]
var a = new[] {1, 2, 3, 4, 5}; // int[]

foreach (var name in names)
{
...
}
اما اینها اشتباه هستند :

var x = null;
var a = 22, b = "Spot", c = 9.5;
var c = new[] {1, "Name", 2, "Address");چند نکته :

بلافاصله بعد از تعریف، متغیر باید مقداردهی شود در غیر اینصورت خطای زمان کامپایل رخ میدهد.
عمل تعیین نوع تنها یکبار انجام شده و پس از آن قابل تغییر نیست.

sinpin
چهارشنبه 01 اسفند 1386, 11:42 صبح
مثال 1 -
فرض کنیم کلاسی مانند زیر تعریف کردیم :

public class User
{
public int Age { get; set; }
public string UserName { get; set; }
}حال در فرم خود بنویسید :

User[] users = new User[] {
new User{UserName="Ahmad", Age=20},
new User{UserName="Maryam", Age=17},
new User{UserName="Ali", Age=29},
new User{UserName="Hooman", Age=33},
new User{UserName="Sara", Age=22},
};

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

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

مثال 2 -

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

sinpin
چهارشنبه 01 اسفند 1386, 14:33 عصر
میتونید کالکشنها رو در همان زمان تعریف مقداردهی نیز کنید.

مثال 1-

List<string> names = new List<string> {"Jim", "Joe", "Bob", "Sam"};مثال 2- با فرض داشتن کلاسی مانند:

public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}میتونیم بنویسیم :

List<Person> people = new List<Person> {
new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 },
new Person { FirstName = "Bill", LastName = "Gates", Age = 50 },
new Person { FirstName = "Susanne", LastName = "Guthrie", Age = 32 }
};

sinpin
چهارشنبه 01 اسفند 1386, 15:22 عصر
روشی برای تزریق یک متود تعریف شده به سایر کلاسها بدون دسترسی به سورس و کامپایل مجدد است.
(البته این تزریق بصورت موقت و ظاهری است و در پشت پرده از طریق یک متود استاتیک اینکار انجام میشود.)

مثال - میخواهیم متودی به کلاس string بیافزاییم که آخرین حرف یک رشته را برگرداند. یک کلاس استاتیک به شکل زیر تعریف میکنیم : (توجه : اسم کلاس اهمیتی ندارد)

public static class MyExtensions
{
public static string GetLastCharacter(this System.String str)
{
return str.Substring(str.Length-1, 1);
}
} حال میتونیم این متد را در لیست متدهای یک string - مانند زیر - مشاهده کنیم :

string temp = "Sinpin";
MessageBox.Show( temp.GetLastCharacter());

sinpin
چهارشنبه 01 اسفند 1386, 22:48 عصر
using System.Net.Mail;
class SendEmail
{
public static void SendMessage(string subject, string messageBody, string fromAddress, string toAddress, string ccAddress)
{
MailMessage message = new MailMessage();
SmtpClient client = new SmtpClient();
message.From = new MailAddress(fromAddress);

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

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

message.Subject = subject;
message.Body = messageBody;
client.Host = "YourMailServer";
client.Send(message);
}
}
منبع : http://code.msdn.microsoft.com/sendemail (http://code.msdn.microsoft.com/sendemail)

Mahdi.Kiani
پنج شنبه 02 اسفند 1386, 00:07 صبح
نمونه برنامه را می توانید در اخر همین پست دانلود کنید
برای این عمل به یک رویداد (MouseMove) برای pictureBox منبع نیاز دارید و دو رویداد (DragDrop) و ( DragEnter) از pictureBox مقصد. که نحوه کد کردن آن ها به شکل زیر است


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

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





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




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



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

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



http://aycu10.webshots.com/image/46489/2001726842362530842_rs.jpg



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

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



new AboutBox1().ShowDialog(this);


مانند شکل زیر





http://aycu14.webshots.com/image/45173/2005166458464454916_rs.jpg



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

Mahdi.Kiani
پنج شنبه 02 اسفند 1386, 01:04 صبح
< نمونه برنامه را می تونین در آخر مطالب دریافت کنید>

توسط متد زیر می توانید هر عکسی را به حالت سیاه و سفید یا همون grayScale در بیارین




public Image GrayScaleImage(Graphics graph, Image img, int left, int top)
{

ColorMatrix colorMix = new ColorMatrix();
colorMix.Matrix00 = 1 / 3f;
colorMix.Matrix01 = 1 / 3f;
colorMix.Matrix02 = 1 / 3f;
colorMix.Matrix10 = 1 / 3f;
colorMix.Matrix11 = 1 / 3f;
colorMix.Matrix12 = 1 / 3f;
colorMix.Matrix20 = 1 / 3f;
colorMix.Matrix21 = 1 / 3f;
colorMix.Matrix22 = 1 / 3f;

ImageAttributes imgAttrib = new ImageAttributes();
imgAttrib.SetColorMatrix(colorMix);


graph.DrawImage(img, new Rectangle(left, top, img.Width,
img.Height), 0, 0, img.Width, img.Height,
GraphicsUnit.Pixel, imgAttrib);
Bitmap bmp = new Bitmap(img);
return bmp;


}




عملکر متد خیلی واضحه.
کلا با ImageAttribute ها و ColorMiser ها خیلی کارهای خوشکلی میشه کرد که به مرور میذارم اینجا
راستی این کد به درد اون دسته عزیزانی که می خواستن، shutdown ویندوز را شبیه سازی کنند خیلی خوبه. (اینکه می خواستن از دسکتاپ عکس بگیرن و بعد اونو تار کنن) البته برای تار کردن عکس ها، راه های دیگه ای هم هست که انشالا به مرور
نمونه



http://aycu29.webshots.com/image/45788/2002388516569305646_rs.jpg




در حاشیه :
تورو خدا می بینین؟ فردا ظهر امتحان ارشد دارم، الان ساعت 1:30 نصف شبه :قهقهه: نشستم برای شما و فقط به عشق شما دوستان مطلب می نویسم
موفق باشید
یا علی مدد
مهدی کیانی

sinpin
پنج شنبه 02 اسفند 1386, 01:34 صبح
این کلاس مختص دات نت 3.5 (به بعد) است و جهت استفاده باید System.Core رو نیز به References پروژه ی خود بیافزایید.

مثال - بدست آوردن تاریخ و زمان فعلی در توکیو :

TimeZoneInfo tzSource = TimeZoneInfo.Local;
TimeZoneInfo tzDestination = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
string sourceTime = TimeZoneInfo.ConvertTime(DateTime.Now,
tzSource, tzDestination).ToShortTimeString();
MessageBox.Show(sourceTime);

sinpin
پنج شنبه 02 اسفند 1386, 01:39 صبح
این روش مختص دات نت 3.5 (به بعد) است.


using System.Collections.ObjectModel;بدست آوردن Id و DisplayName نواحی :

ReadOnlyCollection<TimeZoneInfo> zones = TimeZoneInfo.GetSystemTimeZones();
foreach (TimeZoneInfo zone in zones)
{
listBox1.Items.Add(zone.Id);
listBox2.Items.Add(zone.DisplayName);
}

sinpin
پنج شنبه 02 اسفند 1386, 10:47 صبح
using System.IO;


//To create a directory
Directory.CreateDirectory(@"C:\MyNewDir");

//To move a directory
Directory.Move(@"C:\MyNewDir", @"C:\MyMovedDir");

//To delete a directory
Directory.Delete(@"C:\MyMovedDir");

//To Delete a directory recursively
Directory.Delete(@"C:\MyNewDir", true);

//To Delete a File
File.Delete(@"C:\MyFile.Txt");

//To Move a File
File.Move(@"C:\MyFile.Txt", @"C:\MyOtherDir\MyFile.Txt");

//To Copy a file
File.Copy(@"C:\MyFile.Txt", @"C:\MyOtherDir\MyFile.Txt");

//To copy to a different file name is also possible
File.Copy(@"C:\MyFile.Txt", @"C:\MyOtherDir\MyNewFileName.Txt");

//To get information about a file, like the length
//You can also get the extension, directory, LastAccessedtime,
//LastModifiedTime, wether the file exists or not, the creation date,
//attributes of the file etc, from the FileInfo class
FileInfo FI = new FileInfo(@"C:\MyFile.Txt");
Console.WriteLine("File size of MyFile.Txt: {0}", FI.Length);

//copy example
String DateTemp = DateTime.Now;
File.Copy(@"P:\PRD\Products\AHM\prod.CD\Database\data.mdb",
@"P:\PRD\Products\AHM\prod.CD\Database\"+ DateTemp +"-data.mdb");
منبع : http://www.eggheadcafe.com/community/aspnet/2/10009466/copy-file-with-in-folder.aspx

Mahdi.Kiani
پنج شنبه 02 اسفند 1386, 11:44 صبح
معنای کلمات متداولی که معمولا دات نت کار ها خواهند شنید. مخصو.صا تازه کار های عزیز

1 ) CLR
مخفف : Common Language RunTime

معنا :
محیط زمان اجرای برنامه های دات نت
-------------------------------------------------------------------------
2) CTS
مخفف : Common Type System
معنا : تایپ هایی هستند که در همه زبان های دات نت شناخته شده هستند و معمولا یک نام مستعار در هر زبان مجزا دارند.
مثلا System.Int32 در زبان C#‎‎‎‎ همان int و در زبان VB همان Integer است.
نکته:
CTS تایپ ها برای همانهنگ سازی بین زبان های مختلف دات نتی استفاده میشه
----------------------------------------------------------------------------------------------
3) IL
مخفف : Intermediate Language
معنا : زبان واسطی که در مرحله اول کامپیا برنامه ها، تمامی کد های نوشته شده با زبان های دات نت (اعم از سی شارپ، وی بی و ..) به این زبان ترجمه می شوند. (باز هم جهت سازگاری بین زبان های مختلف در دات نت)

مثال

تکه کدی به زبان C#‎‎‎‎



public int add(int num1, int num2)
{

return num1 + num2;
}




همان تکه کد به زبان VB



Public Function add(ByVal num1 As Integer, ByVal num2 As Integer) As Integer

Return num1 + num2
End Function




تکه کد فوق به زبان IL



.method public hidebysig instance int32 add(int32 num1, int32 num2) cil managed
{
.maxstack 2
.locals init (
[0] int32 CS$1$0000)
L_0000: nop
L_0001: ldarg.1
L_0002: ldarg.2
L_0003: add
L_0004: stloc.0
L_0005: br.s L_0007
L_0007: ldloc.0
L_0008: ret
}





نکته : شما می توانید کل برنامه خود را به زبان IL بنویسید و سپس آن را اجرا کنید. ولی اصولا هیچ آدم عاقلی این کار را نمیکنه :لبخند:
------------------------------------------------------------------------------------------
4 ) CIL
مخفف : Common Intermediate Langiage
معنا : معالد همون IL هست.
نکته: استفاده از IL متداول تر است.
-----------------------------------------------------------------------------------------
5) VES
مخفف : Virtual Executation Systeme
معنا : معادل CLR هست
نکته: CLR متداول تر است.
---------------------------------------------------------------------------------
6) CLI
مخفف : Common Language Interface
معنا : به مجموعه CLR و CTS و CLI می گویند

فعلا همینا تو ذهنم بود
اگه بازم یادم اومد، همین جا میذارم

موفق باشید

sinpin
پنج شنبه 02 اسفند 1386, 12:26 عصر
using System.IO;فایلها را در مسیرC:\CopiedFolder کپی میکند :

FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.Description = "Find Folder to Copy.";
if (fbd.ShowDialog() == DialogResult.OK)
{
string[] files = Directory.GetFiles(fbd.SelectedPath);
Directory.CreateDirectory(@"C:\CopiedFolder");
for (int i = 0; i < files.Length; i++)
{
string tmpFileExt = Path.GetExtension(files[i]);
string tmpFileName = Path.GetFileNameWithoutExtension(files[i]);
File.Copy(files[i], @"C:\CopiedFolder\" + tmpFileName + tmpFileExt, true);
}
}
منبع : http://www.se7ensins.com/forums/c/84989-copying-folders.html

sinpin
پنج شنبه 02 اسفند 1386, 12:31 عصر
نسل جدید ساخت UI است که با پیدایش دات نت فریمورک 3.0 بوجود آمد.
با استفاده از زبان XAML باعث تفکیک و جدایی ظاهر یک فرم و منطق پشت زمینه ی آن میشود، لذا برنامه نویس و گرافیست میتوانند در کنار یکدیگر به راحتی روی یک برنامه کار کنند.

قبلا برای ساخت یک برنامه که قابلیتهایی مانند :
Graphical interface, On-screen documents, Fixed-format documents, Video and audio, 2D/3D graphics, Image Processing داشته باشد؛‌ میبایستا کتابخانه های مختلفی مانند :
DirectX, +GDI, PDF, Media Player, Windows Form, ... را میشناختید و با آنها کار میکردید؛ در حالیکه هم اکنون تنها با استفاده از WPF تمامی آن قابلیتها در دسترس هستند.

پیشنهاد میکنم حتما لینک بسیار مفید زیر رو ببینید :
http://msdn2.microsoft.com/en-us/library/aa970268.aspx

این هم خوبه :
http://en.wikipedia.org/wiki/Windows_Presentation_Foundation

sinpin
پنج شنبه 02 اسفند 1386, 17:21 عصر
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

sinpin
پنج شنبه 02 اسفند 1386, 22:08 عصر
Serialize :
فرآیندی برای تبدیل یک آبجکت و یا گرافی متشکل از چند آبجکت به یک حالت خطی (و جریان وار) از بایت ها برای انتقال و یا ذخیره سازی در محلی دیگر است.

Deserialize :
عمل برعکس سریالیزشین است؛ یعنی دوباره ساختن آبجکت از روی جریانی از بایتها .


انواع فرمت ها در سریالیزشین :
1- Binary : بصورت باینری سریالایز میکند. (فشرده ترین و efficient ترین حالت است)
SOAP -2 : بصورت soap سریالایز میکند. (برای ارسال در شبکه و جایی که از تحت دات نت بودن کلاینتها مطمئن نیستیم)
XML -3 : بصورت xml سریالایز میکند. (برای ارسال تحت شبکه - مزیت : خوانایی)

برخی از موارد کاربرد سریالزیشین:
1- کپی یک انشعاب از آبجکتها
2- انتقال اطلاعات در شبکه
3- نگهداری state ها و snapshot های مختلف در یک برنامه (برای موارد حساس : مثل تراکنشهای بانکی و ...)
4- پیاده سازی Deep Copy و Shallow Copy (http://en.wikipedia.org/wiki/Object_copy)

sinpin
جمعه 03 اسفند 1386, 19:04 عصر
فرض کنیم که :

int a = 3, b = 5;
حال میتونیم به جای نوشتن :

string result = a.ToString() + "+" + b.ToString() + "=" + (a + b).ToString();
بسادگی بنویسیم :

string result = string.Format("{0}+{1}={2}", a, b, a + b);

استفاده از Place Holder ها (حالت دوم) ضمن خوانایی بیشتر برنامه، معمولا کدنویسی کمتری نیز طلب میکند.

sinpin
شنبه 04 اسفند 1386, 10:08 صبح
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;

[DllImport( "user32.dll" )]
static extern IntPtr GetDC( IntPtr hWnd );
[DllImport( "user32.dll" )]
static extern int ReleaseDC( IntPtr hWnd, IntPtr hDC );
[DllImport( "gdi32.dll" )]
static extern int GetPixel( IntPtr hDC, int x, int y );
[DllImport( "gdi32.dll" )]
static extern int SetPixel( IntPtr hDC, int x, int y, int color );

static public Color GetPixel( Control control, int x, int y )
{
Color color = Color.Empty;
if (control != null)
{
IntPtr hDC = GetDC( control.Handle );
int colorRef = GetPixel( hDC, x, y );
color = Color.FromArgb(
(int)(colorRef & 0x000000FF),
(int)(colorRef & 0x0000FF00) >> 8,
(int)(colorRef & 0x00FF0000) >> 16 );
ReleaseDC( control.Handle, hDC );
}
return color;
}
static public void SetPixel( Control control, int x, int y, Color color )
{
if (control != null)
{
IntPtr hDC = GetDC( control.Handle );
int argb = color.ToArgb();
int colorRef =
(int)((argb & 0x00FF0000) >> 16) |
(int)(argb & 0x0000FF00) |
(int)((argb & 0x000000FF) << 16);
SetPixel( hDC, x, y, colorRef );
ReleaseDC( control.Handle, hDC );
}
}منبع : http://www.devtopics.com/c-getpixel-and-setpixel/

sinpin
شنبه 04 اسفند 1386, 10:14 صبح
using System.Drawing.Imaging;
Bitmap bmp = new Bitmap(picturebox1.Image);

//read
Color c = bmp.GetPixel(1, 1);

//write
bmp.SetPixel(2, 2, c);

مثال - بنقل از :‌ http://msdn2.microsoft.com/en-us/library/system.drawing.bitmap.getpixel.aspx


private void GetPixel_Example(PaintEventArgs e)
{

// Create a Bitmap object from an image file.
Bitmap myBitmap = new Bitmap("Grapes.jpg");

// Get the color of a pixel within myBitmap.
Color pixelColor = myBitmap.GetPixel(50, 50);

// Fill a rectangle with pixelColor.
SolidBrush pixelBrush = new SolidBrush(pixelColor);
e.Graphics.FillRectangle(pixelBrush, 0, 0, 100, 100);
}

sinpin
شنبه 04 اسفند 1386, 12:33 عصر
using Microsoft.Win32;
// Create SubKey
Registry.LocalMachine.CreateSubKey(@"Software\Sinpin", RegistryKeyPermissionCheck.ReadWriteSubTree);

//Create Key and Set Value
RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"Software\Sinpin", true);
reg.SetValue("DWord", "1", RegistryValueKind.DWord);
reg.SetValue("ExpandString", "1", RegistryValueKind.ExpandString);
reg.SetValue("QWord", "1", RegistryValueKind.QWord);
reg.SetValue("String", "1", RegistryValueKind.String);
reg.SetValue("Unknown", "1", RegistryValueKind.Unknown);

// Delete Key
reg.DeleteValue("DWOrd");

// Delete SubKey
Registry.LocalMachine.DeleteSubKey(@"Software\Sinpin");

// Read Key Value
string val = reg.GetValue("QWord").ToString();

// Retrieve All Keys
foreach (string s in reg.GetValueNames())
MessageBox.Show(s);

sinpin
شنبه 04 اسفند 1386, 12:47 عصر
using System.Drawing.Drawing2D;
private static Image resizeImage(Image imgToResize, Size size)
{
int sourceWidth = imgToResize.Width;
int sourceHeight = imgToResize.Height;

float nPercent = 0;
float nPercentW = 0;
float nPercentH = 0;

nPercentW = ((float)size.Width / (float)sourceWidth);
nPercentH = ((float)size.Height / (float)sourceHeight);

if (nPercentH < nPercentW)
nPercent = nPercentH;
else
nPercent = nPercentW;

int destWidth = (int)(sourceWidth * nPercent);
int destHeight = (int)(sourceHeight * nPercent);

Bitmap b = new Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage((Image)b);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;

g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
g.Dispose();

return (Image)b;
}
منبع : http://blog.paranoidferret.com/?p=11

sinpin
شنبه 04 اسفند 1386, 12:50 عصر
private static Image cropImage(Image img, Rectangle cropArea)
{
Bitmap bmpImage = new Bitmap(img);
Bitmap bmpCrop = bmpImage.Clone(cropArea,
bmpImage.PixelFormat);
return (Image)(bmpCrop);
}
مثال از نحوه ی استفاده :


private void button1_Click(object sender, EventArgs e)
{
pictureBox2.Image = cropImage(pictureBox1.Image, new Rectangle(10,10,100,100));
}
منبع : http://blog.paranoidferret.com/?p=11

sinpin
شنبه 04 اسفند 1386, 13:04 عصر
using System.Drawing.Imaging;
public static Bitmap MakeGrayscale(Bitmap original)
{
//create a blank bitmap the same size as original
Bitmap newBitmap =
new Bitmap(original.Width, original.Height);

//get a graphics object from the new image
Graphics g = Graphics.FromImage(newBitmap);

//create the grayscale ColorMatrix
ColorMatrix colorMatrix = new ColorMatrix(
new float[][]{
new float[] {.3f, .3f, .3f, 0, 0},
new float[] {.59f, .59f, .59f, 0, 0},
new float[] {.11f, .11f, .11f, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1}});

//create some image attributes
ImageAttributes attributes = new ImageAttributes();

//set the color matrix attribute
attributes.SetColorMatrix(colorMatrix);

//draw the original image on the new image
//using the grayscale color matrix
g.DrawImage(original,
new Rectangle(0, 0, original.Width, original.Height),
0, 0, original.Width, original.Height,
GraphicsUnit.Pixel, attributes);

//dispose the Graphics object
g.Dispose();
return newBitmap;
}منبع : http://blog.paranoidferret.com/index.php/2007/08/31/csharp-tutorial-convert-a-color-image-to-greyscale/

مثال -

private void button1_Click(object sender, EventArgs e)
{
Bitmap b = (Bitmap) pictureBox1.Image;
pictureBox2.Image = MakeGrayscale(b);
}

sinpin
شنبه 04 اسفند 1386, 13:08 عصر
public T NumToEnum<T>(int number)
{
return (T)Enum.ToObject(typeof(T), number);
}

مثال - با فرض داشتن :

public enum DaysOfWeek
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}

میتوانیم بنویسیم :

int day = 3;

DaysOfWeek d = NumToEnum<DaysOfWeek>(day);
//d is now DaysOfWeek.Thursday


منبع : http://blog.paranoidferret.com/index.php/2007/08/01/csharp-snippet-tutorial-how-to-get-an-enum-from-a-number/

sinpin
شنبه 04 اسفند 1386, 13:11 عصر
public static T StringToEnum<T>(string name)
{
return (T)Enum.Parse(typeof(T), name);
}


مثال - با فرض داشتن :

public enum DaysOfWeek
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}

میتوانیم بنویسیم :

DaysOfWeek d = StringToEnum<DaysOfWeek>("Monday");
//d is now DaysOfWeek.Monday if(Enum.IsDefined(typeof(DaysOfWeek), "Katillsday"))
StringToEnum<DaysOfWeek>("Katillsday");


منبع : http://blog.paranoidferret.com/index.php/2007/09/17/csharp-snippet-tutorial-how-to-get-an-enum-from-a-string/

sinpin
شنبه 04 اسفند 1386, 13:15 عصر
class GenericSingleton<T> where T : class, new()
{
private static T instance;

public static T GetInstance()
{
lock (typeof(T))
{
if (instance == null)
{
instance = new T();
}
return instance;
}
}
}


مثال از نحوه ی استفاده :

AutoFactory autoF = GenericSingleton<AutoFactory>.GetInstance();
منبع : http://blog.paranoidferret.com/index.php/2007/06/22/csharp-tutorial-singleton-pattern/

sinpin
شنبه 04 اسفند 1386, 13:17 عصر
private Bitmap rotateImage(Bitmap b, float angle)
{
//create a new empty bitmap to hold rotated image
Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
//make a graphics object from the empty bitmap
Graphics g = Graphics.FromImage(returnBitmap);
//move rotation point to center of image
g.TranslateTransform((float)b.Width / 2, (float)b.Height / 2);
//rotate
g.RotateTransform(angle);
//move image back
g.TranslateTransform(-(float)b.Width / 2, -(float)b.Height / 2);
//draw passed in image onto graphics object
g.DrawImage(b, new Point(0, 0));
return returnBitmap;
}
مثال استفاده :

private void button1_Click(object sender, EventArgs e)
{
Bitmap b = (Bitmap) pictureBox1.Image;
pictureBox2.Image = rotateImage(b, 60);
}
منبع : http://blog.paranoidferret.com/index.php/2007/06/13/csharp-tutorial-image-editing-rotate/

sinpin
شنبه 04 اسفند 1386, 13:27 عصر
با استفاده از کلمه کلیدی params مانند نمونه زیر :
public int Add(params int[] list)
{
int sum = 0;
foreach (int i in list)
sum += i;
return sum;
}



حال میتونیم این متود را به این شکل صدا بزنیم :


int ans1 = Add(1);
int ans2 = Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int ans3 = Add(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
int ans4 = Add();

نکته :‌ متود میتواند چندین پارامتر دیگر غیر از پارامتر از نوع params بپذیرد اما پارامتر params حتما باید آخرین پارامتر باشد. مانند :

public void AddAndPrint(string str, params int[] list)
{
int sum = 0;
foreach (int i in list)
sum += i;
Console.WriteLine(str + sum);
}



منبع : http://blog.paranoidferret.com/index.php/2007/11/22/csharp-snippet-tutorial-the-params-keyword/

sinpin
شنبه 04 اسفند 1386, 13:46 عصر
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
public void SerializeObject(string filename, Object o)
{
Stream stream = File.Open(filename, FileMode.Create);
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, o);
stream.Close();
} منبع :‌ http://blog.paranoidferret.com/index.php/2007/04/27/csharp-tutorial-serialize-objects-to-a-file/

sinpin
شنبه 04 اسفند 1386, 14:04 عصر
ایندکسرها نوعی از پراپرتیها هستند که به شما اجازه میدهند با اشیاء کلاس خود آرایه وار رفتار کنید.
تعریف یک ایندکسر نیز مانند تعریف یک پراپرتی است و در حالت کلی داریم :

<Modifier> <Return type> this[arguments]
{
get { }
Set { }
}برای مثال - با فرض داشتن کلاسی مانند :

class Employee
{
private string[] name = new string[10];
public string this[int index]
{
get
{
return name[index];
}
set
{
name[index] = value;
}
}
}میتوان نوشت :

Employee emp = new Employee();
emp[0] = "Joydip";
emp[1] = "Manashi";
emp[2] = "Jini";نکته :
+ ایندکسرها حتما باید یک پارامتر داشته باشد.
+ ایندکسرها نمیتوانند استاتیک باشند (بعلت نیاز به this)
____________________________________________
منبع : http://aspalliance.com/800_Properties_and_Indexers_in_C

Masoud_TB
شنبه 04 اسفند 1386, 14:11 عصر
حتما همه دیدیدن که در Visual Studio 2008 فایل های Configuration رو به صورت Intellisense دار می تونین استفاده کنین. به این معنی که وقتی شما ابتدای کلمه ای رو تایپ می کنین دقیقا مثل کد های سی شارپ خودش ادامش رو براتون نمایش میده :

http://www.scottgu.com/BlogPosts/webconfig/webconfig.png

نکته ای که وجود داره این است که گاهی اوقات این Intellisense دیگه کار نمی کنه. برای اینکه این مشکل حل بشه خوبه بدونین که دلیل اینه که توی فایل web.config تون در قسمت یه تکه کد اضافه شده که اونو به صورت زیر تغییر داده :

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

تنها کاری که باید انجام بدین اینه که برین و namespace مربوطه رو حذف کنین و همان configuration رو داشته باشین:

<configuration>

اینجوری مشکلتون حل میشه!

Masoud_TB
شنبه 04 اسفند 1386, 14:21 عصر
برای Serialize کردن یک object در فایل XML می تونین از این کد استفاده کنین:


XmlSerializer xmSer = new XmlSerializer(typeof(Person));
FileStream st = new FileStream("C:\\Test.xml",FileMode.OpenOrCreate);
Person p = new Person("Ali Rezaei",44);
xmSer.Serialize(st, p);
st.Close();

Masoud_TB
شنبه 04 اسفند 1386, 14:23 عصر
برای بازیابی شیء تون از یک فایل XML می تونین از این کد استفاده کنین:


XmlSerializer xmSer = new XmlSerializer(typeof(Person));
FileStream st = new FileStream("C:\\Test.xml",FileMode.Open);
Person p = xmSer.Deserialize(st) as Person;
st.Close();

Masoud_TB
شنبه 04 اسفند 1386, 14:27 عصر
برای Serialize کردن object تون توی فایل Soap می تونین از این کد استفاده کنین.
دقت کنین که باید System.Runtime.Serialization.Formatters.Soap رو Add Reference و using کنین.



SoapFormatter soap = new SoapFormatter();
FileStream st = new FileStream("C:\\Test.soap",FileMode.OpenOrCreate);
Person p = new Person("Ali Rezaei", 33);
soap.Serialize(st, p);
st.Close();

Masoud_TB
شنبه 04 اسفند 1386, 14:29 عصر
برای بازیابی شیء تون از یک فایل SOAP می تونین از این کد استفاده کنین:


SoapFormatter soap = new SoapFormatter();
FileStream st = new FileStream("C:\\Test.soap",FileMode.Open);
Person p = soap.Deserialize(st) as Person;
st.Close();

az_farzaneh
شنبه 04 اسفند 1386, 15:14 عصر
class MyClass
{
private int number ;
public MyClass(int _number)
{
this.number = _number;
}
public static MyClass operator+ (MyClass c1, MyClass c2)
{
return new MyClass(c1.number + c2.number);
}
}
تعریف یک Operator overloading همیشه باید بصورت Static و Public باشد و مقدار برگشتی آن نیز نمیتواند void باشد.

.

az_farzaneh
شنبه 04 اسفند 1386, 15:46 عصر
کافی است در اعلان کلاس و بعد از Access modifier از کلمه کلیدی sealed استفاده کنیم.


public sealed class MyClass{}

sinpin
شنبه 04 اسفند 1386, 23:02 عصر
ابتدا System.Management رو به References پروژه بیفزایید و سپس :

using System.Management;
public string GetCPUId()
{
string cpuInfo = String.Empty;
//create an instance of the Managemnet class with the
//Win32_Processor class
ManagementClass mgmt = new ManagementClass("Win32_Processor");
//create a ManagementObjectCollection to loop through
ManagementObjectCollection objCol = mgmt.GetInstances();
//start our loop for all processors found
foreach (ManagementObject obj in objCol)
{
if (cpuInfo == String.Empty)
{
// only return cpuInfo from first CPU
cpuInfo = obj.Properties["ProcessorId"].Value.ToString();
}
}
return cpuInfo;
}منبع : http://www.dreamincode.net/forums/index.php?showtopic=42934&pid=307855&st=0&#entry307855

sinpin
شنبه 04 اسفند 1386, 23:07 عصر
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

public object DeSerializeObject(string filename)
{
object o;
Stream stream = File.Open(filename, FileMode.Open);
BinaryFormatter bFormatter = new BinaryFormatter();
o =
(ObjectToSerialize)bFormatter.Deserialize(stream);
stream.Close();
return o;
} منبع :‌ http://blog.paranoidferret.com/index.php/2007/04/27/csharp-tutorial-serialize-objects-to-a-file/

sinpin
شنبه 04 اسفند 1386, 23:10 عصر
ابتدا System.Management رو به References پروژه بیفزایید و سپس :

using System.Management;
public string GetCPUManufacturer()
{
string cpuMan = String.Empty;
//create an instance of the Managemnet class with the
//Win32_Processor class
ManagementClass mgmt = new ManagementClass("Win32_Processor");
//create a ManagementObjectCollection to loop through
ManagementObjectCollection objCol = mgmt.GetInstances();
//start our loop for all processors found
foreach (ManagementObject obj in objCol)
{
if (cpuMan == String.Empty)
{
// only return manufacturer from first CPU
cpuMan = obj.Properties["Manufacturer"].Value.ToString();
}
}
return cpuMan;
}منبع : http://www.dreamincode.net/forums/index.php?showtopic=42934&pid=307855&st=0&#entry307855

sinpin
شنبه 04 اسفند 1386, 23:14 عصر
ابتدا System.Management رو به References پروژه بیفزایید و سپس :

using System.Management;

public double GetHDDFreeSpace(string drive)
{
//check to see if the user provided a drive letter
//if not default it to "C"
if (drive == "" || drive == null)
{
drive = "C";
}
//create our ManagementObject, passing it the drive letter to the
//DevideID using WQL
ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
//bind our management object
disk.Get();
//return the free space amount
return Convert.ToDouble(disk["FreeSpace"]);
}
منبع : http://www.dreamincode.net/forums/index.php?showtopic=42934&pid=307855&st=0&#entry307855

sinpin
شنبه 04 اسفند 1386, 23:15 عصر
ابتدا System.Management رو به References پروژه بیفزایید و سپس :

using System.Management;

public double getHDDSize(string drive)
{
//check to see if the user provided a drive letter
//if not default it to "C"
if (drive == "" || drive == null)
{
drive = "C";
}
//create our ManagementObject, passing it the drive letter to the
//DevideID using WQL
ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
//bind our management object
disk.Get();
//return the HDD's initial size
return Convert.ToDouble(disk["Size"]);
}
منبع : http://www.dreamincode.net/forums/index.php?showtopic=42934&pid=307855&st=0&#entry307855

sinpin
یک شنبه 05 اسفند 1386, 00:10 صبح
آبجکتهای string در دات نت immutable (غیرقابل تغییر) هستند :‌به این معنا که پس از مقدار گرفتن، دیگر قابل تغییر نیستند.

به مثال زیر دقت کنید :

string temp = "a";
temp = temp + "b";
temp += "c";
temp += "d";در این مثال ابتدا یک آبجکت از نوع string میسازید، اما در خطوط بعدی با هر بار تغییر مقدار آن؛ آبجکتهای قدیمی فراموش و یک آبجکت جدید از نوع string - با مقدار جدید - ساخته میشود.
به این ترتیب میشه انتظار داشت که کد زیر چه سربار وحشتناکی روی منابع سیستم میتونه داشته باشه :

string s2 = new String('x', Int32.Parse(args[0]));
int loops = Int32.Parse(args[1]);

for (int j = 0; j < 10000000; j++) {
string s = "";
for (int i = loops; i > 0; --i)
s += s2;
}بصورت کلی در حالتیکه اعمال تغییرات زیاد روی رشته ها نیاز باشد بهتر است آبجکتی از کلاس StringBuilder ساخته و با خاصیت Append آن کار کنیم.

مثال - پیاده سازی همان کد قبلی :

string s2 = new String('x', Int32.Parse(args[0]));
int loops = Int32.Parse(args[1]);

for (int j = 0; j < 10000000; j++) {
StringBuilder sb = new StringBuilder();
for (int i = loops; i > 0; --i)
sb.Append(s2);
sb.ToString();
}منبع : http://www.heikniemi.net/hc/archives/000124.html

az_farzaneh
یک شنبه 05 اسفند 1386, 00:56 صبح
با فرض داشتن کلاسی مانند :

public class Person
{
public Person() { }
public Person(string _firstName, string _lastName)
{
this.firstName = _firstName;
this.lastName = _lastName;
}
private string firstName;
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
private string lastName;
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
}
میتونیم بنویسیم :

List<Person> persons = new List<Person>();
persons.Add(new Person("ali", "ahmadi");
persons.Add(new Person("maryam", "hosseini");

az_farzaneh
یک شنبه 05 اسفند 1386, 01:06 صبح
مثال:ساختن 10 دکمه درون یک لیست ژنریک و اختصاص آن به لیست کنترلهای یک فرم

private void Form1_Load(object sender, EventArgs e)
{
List<Button> buttons = new List<Button>();
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Size = new Size(120, 22);
btn.Text = string.Format("Button{0}", i);
btn.Location = new Point(10, i * 25 + 10);
buttons.Add(btn);
}
this.Controls.AddRange(buttons.ToArray());
}

az_farzaneh
یک شنبه 05 اسفند 1386, 01:22 صبح
private void Form1_Load(object sender, EventArgs e)
{
List<Button> buttons = new List<Button>();
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Size = new Size(120, 22);
btn.Text = string.Format("Button{0}", i);
btn.Location = new Point(10, i * 25 + 10);
btn.Click += new EventHandler(btn_Click);
buttons.Add(btn);
}
this.Controls.AddRange(buttons.ToArray());
}

void btn_Click(object sender, EventArgs e)
{
for (int i = 0 ; i < 10 ; i++)
{
Button btn = sender as Button;
btn.Location = new Point(btn.Left + i, btn.Top);
Application.DoEvents();
}
}

sinpin
یک شنبه 05 اسفند 1386, 12:09 عصر
کلاس مورد نظر باید اینترفیس IComparable رو پیاده سازی کند. (این اینترفیس تنها یک متود CompareTo دارد)
به نحوه ی پیاده سازی متود CompareTo دقت کنید :

public class Person : IComparable
{
private string _firstname;
public string Firstname
{
get { return _firstname; }
set { _firstname = value; }
}

private string _lastname;
public string Lastname
{
get { return _lastname; }
set { _lastname = value; }
}

private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}

public Person(string firstname, string lastname, int age)
{
_firstname = firstname;
_lastname = lastname;
_age = age;
}

public int CompareTo(object obj)
{
if (obj is Person)
{
Person p2 = (Person)obj;
return _firstname.CompareTo(p2.Firstname);
}
else
throw new ArgumentException("Object is not a Person.");
}


public override string ToString()
{
return String.Format("{0} {1}, Age = {2}", _firstname,
_lastname, _age.ToString());
}
}مثال - Sort کردن افراد از روی اسم کوچک (استفاده از کلاس بالا) :

List<Person> persons = new List<Person>();
persons.Add(new Person("Behrouz", "Rad", 30));
persons.Add(new Person("Omid", "Mottaghi Rad", 31));
persons.Add(new Person("Mehdi", "Keramati", 32));
persons.Add(new Person("Ali", "Keshavarz", 33));
persons.Add(new Person("Mohammad", "Heshemian", 34));
persons.Add(new Person("Farhad", "XXX", 35));

//Before Sorting
listBox1.Items.AddRange(persons.ToArray());

//ُSorting List
persons.Sort();

//Sorted List
listBox2.Items.AddRange(persons.ToArray());منب : http://codebetter.com/blogs/david.hayden/pages/56094.aspx

Amir Oveisi
یک شنبه 05 اسفند 1386, 13:11 عصر
معمولا متدهایی که بار پردازشی زیادی دارند موجب کندی برنامه میشن
برای جلوگیری از این کار میشه این متد هارو با استفاده از یک Thread متفاوت از Thread اصلی برنامه فراخوانی کرد.

using System.Threading;

فرض کنیم این متد رو داریم :


void DoSomething()
{
...
}
تعریف Thread جدید برای متد مورد نظر :

Thread myThread = new Thread(new ThreadStart(this.DoSomthing));

فراخوانی متد با استفاده از متد تعریف شده‌:

myThread.Start();

برای متوقف کردن Thread‌ایجاد شده :

myThread.Abort();

نکته :‌
هر Thread‌فقط میتواند با object هایی کار کند که خودش آنها را ایجاد کرده است. مثلا اگر در متد DoSomething‌شما بخواهید با یک label که روی فرم است کار کنید cross-thread exception رخ خواهد داد چون آن label بوسیله Thread‌اصلی برنامه ایجاد شده است.

razavi_university
یک شنبه 05 اسفند 1386, 15:13 عصر
ممکنه توی فرمتون تعداد زیادی TextBox باشه و بخوایید هر بار که اون فوکوس میشه متن داخلش انتخاب بشه تا اگه کاربر بخواد اون رو عوض کنه نیازی به Del و BackSpace نداشته باشه (و یا اعمال دیگر )
میشه برای هر TextBox یه Event نوشت و اون کار رو انجام بدید
حالا اگه تعداد textBox ها زیاد باشه برای هر کنترل یک Event:اشتباه:
میشه برای همه اونهایک Event نوشت تا اینکار رو برای همه اونها انجام بده :
اول باید همه TextBox هایی رو که می خوایید انتخاب کنین بعد یه Event براشون بزارین تا همشون از یه Event استفاده کنند بعد این کد رو داخل اون Event می گذارید


private void textBox1_Enter(object sender, EventArgs e)
{
TextBox txtbx = sender as TextBox;
txtbx.text.selectall();
}

razavi_university
یک شنبه 05 اسفند 1386, 15:31 عصر
ممکنه در زمانی که کد می نویسید تورفتگی های پیشفرضی که محیط ادیتور ایجاد می کنه بهم بریزه و کم یا زیاد بشه
حالا اگه بخواییم با Space و Del درستشون کنیم که:عصبانی++:
میشه اینکارو به ادیتور سپرد
1- اول کد را انتخاب می کنیم و یا کل کد Ctrl+A
2- بعد Ctrl+K
3- در آخر Ctrl+F

میشه با این کلید ها هم انجام داد Ctrl+E,D
با این روش کل کد مرتب میشه
از Edit هم قابل دسترسی است :


Edit > Advanced > Format Document

az_farzaneh
یک شنبه 05 اسفند 1386, 22:18 عصر
public enum Days { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri };
string s= Enum.GetName(typeof(Days),4);

sinpin
دوشنبه 06 اسفند 1386, 08:28 صبح
using System.Threading;متود Main از کلاس StartUp پروژه رو به این شکل تغییر بدید :

[STAThread]
static void Main()
{
bool ok;
Mutex m = new Mutex(true, "YourNameHere", out ok);
if (! ok)
{
MessageBox.Show("Another instance is already running.");
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1()); // or whatever was there
GC.KeepAlive(m); // important!
}منبع : http://www.ai.uga.edu/mc/SingleInstance.html

sinpin
دوشنبه 06 اسفند 1386, 09:40 صبح
مثال - نمایش یک فرم با دانستن نام آن :
(این مثال کاربردهای زیادی میتواند داشته باشد، فرض کنید که نام فرمهای مورد نیاز برای کاربردی خاص رو در یک جدول دیتابیس ذخیره کرده اید)


using System.Reflection;


private void button1_Click(object sender, EventArgs e)
{
Assembly myAssembly = Assembly.GetExecutingAssembly();
Form myForm =
myAssembly.CreateInstance("WindowsFormsApplication1.Form2") as Form;
myForm.ShowDialog();
}نکته : حتما نام NameSpace را قبل از نام آبجکت قرار دهید؛ در مثال بالا "WindowsFormsApplication1" بود.

sinpin
دوشنبه 06 اسفند 1386, 12:07 عصر
از این کلاس معمولا جهت Log کردن عملیات یک برنامه استفاده میشود.
(برای مشاهده آن به Event Viewer ویندوز مراجعه نمایید)


using System.Diagnostics;
// Create the source, if it does not already exist.
if(!EventLog.SourceExists("MySource"))
{
//An event log source should not be created and immediately used.
//There is a latency time to enable the source, it should be created
//prior to executing the application that uses the source.
//Execute this sample a second time to use the new source.
EventLog.CreateEventSource("MySource", "MyNewLog");
Console.WriteLine("CreatedEventSource");
Console.WriteLine("Exiting, execute the application a second time to use the source.");
// The source is created. Exit the application to allow it to be registered.
return;
}

// Create an EventLog instance and assign its source.
EventLog myLog = new EventLog();
myLog.Source = "MySource";

// Write an informational entry to the event log.
myLog.WriteEntry("Writing to event log.");منبع : http://msdn2.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx

sinpin
دوشنبه 06 اسفند 1386, 12:21 عصر
using System.Diagnostics;
Process myProcess = new Process();
// Get the process start information of notepad.
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("notepad.exe");
// Assign 'StartInfo' of notepad to 'StartInfo' of 'myProcess' object.
myProcess.StartInfo = myProcessStartInfo;
// Create a notepad.
myProcess.Start();
System.Threading.Thread.Sleep(1000);
ProcessModule myProcessModule;
// Get all the modules associated with 'myProcess'.
ProcessModuleCollection myProcessModuleCollection = myProcess.Modules;
Console.WriteLine("Properties of the modules associated "
+"with 'notepad' are:");
// Display the properties of each of the modules.
for( int i=0;i<myProcessModuleCollection.Count;i++)
{
myProcessModule = myProcessModuleCollection[i];
Console.WriteLine("The moduleName is "
+myProcessModule.ModuleName);
Console.WriteLine("The " +myProcessModule.ModuleName + "'s base address is: "
+myProcessModule.BaseAddress);
Console.WriteLine("The " +myProcessModule.ModuleName + "'s Entry point address is: "
+myProcessModule.EntryPointAddress);
Console.WriteLine("The " +myProcessModule.ModuleName + "'s File name is: "
+myProcessModule.FileName);
}
// Get the main module associated with 'myProcess'.
myProcessModule = myProcess.MainModule;
// Display the properties of the main module.
Console.WriteLine("The process's main moduleName is: "
+myProcessModule.ModuleName);
Console.WriteLine("The process's main module's base address is: "
+myProcessModule.BaseAddress);
Console.WriteLine("The process's main module's Entry point address is: "
+myProcessModule.EntryPointAddress);
Console.WriteLine("The process's main module's File name is: "
+myProcessModule.FileName);
myProcess.CloseMainWindow();

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

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

sinpin
دوشنبه 06 اسفند 1386, 13:52 عصر
private void btnAddMenu_Click(object sender, System.EventArgs e)
{
RegistryKey regmenu = null;
RegistryKey regcmd = null;
try
{
regmenu = Registry.ClassesRoot.CreateSubKey(MenuName);
if(regmenu != null)
regmenu.SetValue("",this.txtName.Text);
regcmd = Registry.ClassesRoot.CreateSubKey(Command);
if(regcmd != null)
regcmd.SetValue("",this.txtPath.Text);
}
catch(Exception ex)
{
MessageBox.Show(this,ex.ToString());
}
finally
{
if(regmenu != null)
regmenu.Close();
if(regcmd != null)
regcmd.Close();
}
}منبع : http://www.codeproject.com/KB/cs/appendmenu.aspx?obid=10104

سورس کامل ضمیمه شد.

sinpin
دوشنبه 06 اسفند 1386, 15:12 عصر
//clear clipboard
Clipboard.Clear();

//Set Text to clipboard
if (!string.IsNullOrEmpty(textBox1.Text))
Clipboard.SetText(textBox1.Text);

//Get text from clipboard
MessageBox.Show(Clipboard.GetText());

sinpin
سه شنبه 07 اسفند 1386, 11:59 صبح
using System.Security.Cryptography;
private string encryptString(string strToEncrypt)
{
UTF8Encoding ue = new UTF8Encoding();
byte[] bytes = ue.GetBytes(strToEncrypt);

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] hashBytes = md5.ComputeHash(bytes);

// Bytes to string
return System.Text.RegularExpressions.Regex.Replace
(BitConverter.ToString(hashBytes), "-", "").ToLower();
}یک مثال ساده از نحوه ی استفاده :

MessageBox.Show(encryptString("Sinpin"));خروجی :

e140088b10c4f19588ed3624e2b3c463

az_farzaneh
سه شنبه 07 اسفند 1386, 13:43 عصر
افزودن node ریشه و سپس nodeهای فرزند


treeView1.Nodes.Clear();
treeView1.Nodes.Add("World");
TreeNode[] parents={newTreeNode("Asia"),newTreeNode("Europ"),newTreeNode("Africa"),newTreeNode("Australia"),newTreeNode("Amercia")};
treeView1.Nodes[0].Nodes.AddRange(parents);

حذف node مورد نظر

treeView1.SelectedNode.Remove();

نمایش contextmenu بر روی node انتخاب شده

در رویداد Treeview, NodeMouseClick این کد را مینویسیم

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
treeView1.SelectedNode = e.Node;
e.Node.ContextMenuStrip = cmsCommand;
}
}

saeid.yavary
سه شنبه 07 اسفند 1386, 17:43 عصر
نحوه ارسال به صفحه بعد


Response.Redirect("form2.aspx?کلمه دلخواه=" + Convert.ToString("متغیر"));

نحوه استفاده از ان در صفحه دوم


string str = Request.QueryString.Get("متغیر");

Amir Oveisi
سه شنبه 07 اسفند 1386, 19:09 عصر
فرض کنیم یک تابع داریم که کاری بر روی یک Label‌ انجام میدهد.
میخواهیم این تابع را با استفاده از یک Thread‌دیگر فراخوانی کنیم. دقت کنید که Label توسط thread‌اصلی برنامه ایجاد شده و نمیتوان بصورت عادی به آن دسترسی داشت و با cross-thread exception‌مواجه میشویم.

برای این کار طبق روش زیر میتوان عمل کرد:


using System.Threading;

thread‌ی که برای تابع مورد نظر تعریف میکنیم :

Thread t = new Thread(new ThreadStart(this.DoSomeThing));

برای تعریف تابع مورد نظر باید به نکات زیر توجه داشته باشیم:

- زمانی که کنترل مورد نظر ما (در اینجا label‌) دارای مقدارtrue ‌برای خاصیت InvokeRequired باشد ما باید تابع خود را بصورت cross-thread‌ فراخوانی کنیم. برای اینکار از متد Invoke استفاده میکنیم که یک Delegate به عنوان پارامتر میگیرد و آنرا بصورت cross-thread‌ فراخوانی میکند.

- زمانیکه کنترل مورد نظر دارای مقدار false برای خاصیت InvokeRequired‌خود باشد میتوانیم کارهای مورد نظرمان را بر روی آن انجام دهیم.

پس ما باید در ابتدا delegate‌ی به متد مورد نظرمان تعریف کنیم و با استفاده از آن و به شکل زیر متد خود را تعریف میکنیم :


void DoSomeThing()
{
if(label.InvokeRequired)
{
delegate void myDelegate();
myDelegate del = new myDelegate(this.DoSomeThing);
Invokde(del);
}
else
//something to do on label here
}

sinpin
چهارشنبه 08 اسفند 1386, 12:12 عصر
http://www.carlosag.net/images/codeTranslatorLogo.gif

با استفاده از web application های معرفی شده ی زیر میتوانید بصورت آنلاین تیکه کدهای خود را از سی شارپ به ویبی دات نت و بلعکس تبدیل کنید.
این لیست به مرور تکمیلتر خواهد شد:



http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx

http://www.carlosag.net/Tools/CodeTranslator/Default.aspx

http://www.kamalpatel.net/ConvertCSharp2VB.aspx

http://authors.aspalliance.com/aldotnet/examples/translate.aspx

sinpin
چهارشنبه 08 اسفند 1386, 12:24 عصر
http://labs.developerfusion.co.uk/SourceViewer/view/SSCLI/

از طریق این برنامه میتوانید ضمن پرسه زدن در اسمبلی و اکسپلور کردن کلاسهای مورد نظر سورس کد اونها رو هم ببینید.
برای مثال قسمتی از خروجی این برنامه برای کلاس ArrayList رو مشاهده میکنید :


// Implements a variable-size List that uses an array of objects to store the
// elements. A ArrayList has a capacity, which is the allocated length
// of the internal array. As elements are added to a ArrayList, the capacity
// of the ArrayList is automatically increased as required by reallocating the
// internal array.
//
[DebuggerTypeProxy(typeof(System.Collections.ArrayL ist.ArrayListDebugView))]
[DebuggerDisplay("Count = {Count}")]
[Serializable()]
[System.Runtime.InteropServices.ComVisible(true)]
public class ArrayList : IList, ICloneable
{
private object[] _items;
private int _size;
private int _version;
[NonSerialized()]
private object _syncRoot;
private const int _defaultCapacity = 4;
private static readonly object[] emptyArray = new object[0];

// Note: this constructor is a bogus constructor that does nothing
// and is for use only with SyncArrayList.
internal ArrayList(bool trash)
{
}

// Constructs a ArrayList. The list is initially empty and has a capacity
// of zero. Upon adding the first element to the list the capacity is
// increased to _defaultCapacity, and then increased in multiples of
// two as required.
public ArrayList()
{
_items = emptyArray;
}
.
.
.

Mahdi.Kiani
چهارشنبه 08 اسفند 1386, 12:28 عصر
می تونین با قرار دادن کد هگزای مربوط کاراکتر مورد نظر خود پس از "X\" آن کاراکتر را در هر متغیر رشته ای نشان دهید.
به عنوان مثال کد هگز مربوط به کاراکتر کپی رایت A9 می باشد.
چس اگر شما دستوری مانند زیر در برانامه داشته باشید


MessageBox.Show("\xA9 by barnamenevis.org 2003-2008");

sinpin
چهارشنبه 08 اسفند 1386, 12:45 عصر
SharpDevelop 2.2 (http://www.icsharpcode.net/OpenSource/SD)


هدف از معرفی این IDE این است که دوستان علاقمند سورس کد اون رو (بعنوان یک پروژه واقعی و Enterprise) دانلود و مورد بررسی قرار دهند، احیانا بشه از برخی قسمتهای آن ایده گرفت.

این سورس کد از یک سولوشن متشکل از 45 پروژه به زبان سی شارپ تشکیل شده است.
جهت دانلود فایل Setup و سورس کد به لینک زیر مراجعه کنید :
http://www.icsharpcode.net/OpenSource/SD/Download/#SharpDevelop22

sinpin
چهارشنبه 08 اسفند 1386, 16:31 عصر
private void Form1_Load(object sender, EventArgs e)
{
ToolTip toolTip = new ToolTip();
toolTip.SetToolTip(button1, "Salam");
}

sinpin
پنج شنبه 09 اسفند 1386, 11:16 صبح
در حالیکه ممکن است بین یک Abstract Class (کلاس مجرد) و یک اینترفیس تشابهات زیادی وجود بنظر برسد اما تفاوتهای بین آن دو بیشتر است.

تفاوتها و اینکه کجا بهتر است از کدام استفاده کنیم :

کلاس مجرد یکی از انواع کلاس است اما اینترفیس یک کلاس نیست.
اینترفیس یک قرارداد را مشخص میکند اما کلاس مجرد ناتمام ماندن تعریف یک کلاس را.
یک اینترفیس به هیچ عنوان نمیتواند شامل پیاده سازی درون خود باشد اما یک کلاس مجرد میتواند شامل پیاده سازیهای پیشفرض باشد (اعضایی داشته باشد که بصورت کامل و یا پیشفرض پیاده سازی شده اند)
یک کلاس میتواند چندین اینترفیس را پیاده سازی کند اما تنها میتواند از یک کلاس مجرد به ارث رود.
بصورت پیشفرض اعضای یک اینترفیس تماما public هستند و نمیتوان برای آنها access modifier انتخاب کرد در حالیکه در یک کلاس مجرد ممکن است.
یک کلاس مجرد میتواند شامل فیلد، constructor، destructor و مقادیر ثابت باشد درحالیکه یک اینترفیس نمیتواند.
بصورت کلی کار کردن با یک کلاس مجرد سریعتر از یک اینترفیس است.
اینترفیسها برای نشان دادن قابلیتهای جانبی یک کلاس بکار میروند (مثلا چون هم انسان و هم اتومبیل حرکت میکنند هر دو میتوانند اینترفیس IMovable رو پیاده سازی کنند) درحالیکه یک کلاس مجرد خواص و رفتارهای اصلی یک کلاس را مشخص میکند.
مورد قبلی بصورت خلاصه میشود : یک اینترفیس اغلب برای رابطه هایی مانند can-do و یا able-to استفاده میشود در حالیکه یک کلاس مجرد برای رابطه هایی از نوع : is-a
اگر برای مثال یک متود را به یک اینترفیس اضافه کنیم باید تمامی جاهاییکه آن اینترفیس پیاده سازی شده را دنبال و متود مورد نظر را در آنجا پیاده سازی کنیم در حالیکه اگر از یک کلاس مجرد استفاده کنیم میتوانیم در همانجا متود را با پیاده سازی پیشفرض تعریف کنیم تا به مشکل برنخوریم.
برای ایجاد خواص و رفتارهای مشابه روی مجموعه های بزرگ و نامرتبط از موجودات بهتر است از اینترفیس کمک بگیریم. یک کلاس مجرد تنها برای دسته بندی موجودات مرتبط بکار میرود.
... ادامه داردتوجه : برخی از موارد بالا ممکن است کاملا معنای یکسانی داشته باشند و تنها در ساختار جمله بندی و یا زاویه ی نگرش تفاوت داشته باشند.
منابع :
http://www.codeproject.com/KB/cs/abstractsvsinterfaces.aspx
http://msdn2.microsoft.com/en-us/library/scsyfw1d(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/scsyfw1d%28vs.71%29.aspx)
http://geekswithblogs.net/mahesh/archive/2006/07/05/84120.aspx
http://www.interviewcorner.com/Answer/Answers.aspx?QuestionId=267&MajorCategoryId=1&MinorCategoryId=1
http://www.clt-services.com/docs/Abstract-Classes-vs-Interfaces.pdf
http://technologyandme.wordpress.com/2006/06/04/interface-vs-abstract-class/

sinpin
پنج شنبه 09 اسفند 1386, 20:41 عصر
using System.Runtime.InteropServices;


string CommandString;
OpenFileDialog file = new OpenFileDialog();

[DllImport("winmm.dll")]
private static extern long mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, int hwndCallback);

private void button1_Click(object sender, System.EventArgs e)
{
if (file.ShowDialog() == DialogResult.OK)
{
CommandString = "open " + "\"" + file.FileName + "\"" + " type MPEGVideo alias MediaFile";
mciSendString(CommandString, null, 0, 0);
CommandString = "play MediaFile";
mciSendString(CommandString, null, 0, 0);
}
}
منبع : http://www.csharphelp.com/board2/read.html?f=1&i=12395&t=12395

sinpin
پنج شنبه 09 اسفند 1386, 21:39 عصر
http://www.monodevelop.com/files/thumb/4/40/180px-Md-main.png (http://www.mono-project.com/Image:Md1.png)

MonoDevelop (http://www.monodevelop.com/Main_Page)is a popular, open source integrated development environment (http://en.wikipedia.org/wiki/Integrated_development_environment) for the Linux platform, primarily targeted for the development of software that uses both the Mono (http://en.wikipedia.org/wiki/Mono_%28software%29) and Microsoft .NET framework (http://en.wikipedia.org/wiki/.NET_framework). MonoDevelop integrates features similar to that of Eclipse (http://en.wikipedia.org/wiki/Eclipse_%28software%29) and Microsoft's Visual Studio (http://en.wikipedia.org/wiki/Microsoft_Visual_Studio) such as Intellisense (http://en.wikipedia.org/wiki/Intellisense), source control (http://en.wikipedia.org/wiki/Revision_control) integration, and an integrated GUI and Web designer. MonoDevelop integrates a GTK# (http://en.wikipedia.org/wiki/Gtk_Sharp) GUI designer called Stetic (http://en.wikipedia.org/w/index.php?title=Stetic&action=editredlink).[1] (http://en.wikipedia.org/wiki/MonoDevelop#_note-0) It currently has language support for C# (http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29), Java (http://en.wikipedia.org/wiki/Java_%28programming_language%29), Boo (http://en.wikipedia.org/wiki/Boo_%28programming_language%29), Nemerle (http://en.wikipedia.org/wiki/Nemerle), Visual Basic.NET (http://en.wikipedia.org/wiki/Visual_Basic.NET), CIL (http://en.wikipedia.org/wiki/Common_Intermediate_Language), and C++ (http://en.wikipedia.org/wiki/C%2B%2B).
دانلود :
http://www.monodevelop.com/Download

مستندات :
http://www.monodevelop.com/Documentation

تصاویری از محیط :
http://www.monodevelop.com/Screenshots

sinpin
جمعه 10 اسفند 1386, 00:44 صبح
using System.IO;
بدست آوردن لیست تمامی درایوها :

listBox1.Items.AddRange(DriveInfo.GetDrives());

بدست آوردن لیست تمامی درایوها و نوع آنها :

foreach (DriveInfo drv in DriveInfo.GetDrives())
listBox1.Items.Add(drv.Name + ":" + drv.DriveType);

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

foreach (DriveInfo drv in DriveInfo.GetDrives())
if (drv.IsReady)
{
listBox1.Items.Add(drv.Name + " - free space: " + drv.AvailableFreeSpace);
listBox1.Items.Add(drv.Name + " - total size: " + drv.TotalSize);
}

az_farzaneh
جمعه 10 اسفند 1386, 02:02 صبح
یک property متشکل از 2 متود set,get است که برای دریافت و یا تخصیص مقادیر به متغیر ها استفاده می شوند .از معایب تعریف متغیرهای کلاس به صورت Public اینست که هر موجودی از بیرون کلاس می تواند دسترسی مستقیمی به آن داشته باشد و براحتی آن را دستکاری کند و در ضمن هیچ گونه عمل validation بر روی مقادیر متغیر ها صورت نمیگیرد ,که این با اصول صحیح oop منافات دارد .
دلایل استفاده از property به جای یک متغیر:
1-رعایت اصل encapsulation
2-امکان بازرسی و validation


public class Circle
{
private double radius;
public double Radius
{
get
{
return radius;
}
set
{
if (value>0 && value<50)
radius = value;
}
}
public double GetArea()
{
return radius * radius * 3.14;
}
}
برای مطالعه بیشتر http://csharptuning.blogfa.com/

sinpin
جمعه 10 اسفند 1386, 12:47 عصر
using System.IO;
OpenFileDialog openFile = new OpenFileDialog();
if (openFile.ShowDialog() != DialogResult.OK)
return;

// get filename from OpenFileDialog
string fileName = openFile.FileName;

// get only filename without extension and path
string onlyname = Path.GetFileNameWithoutExtension(fileName);

// get extension of filename
string extension = Path.GetExtension(fileName);

// get directory of specific filename
string directory = Path.GetDirectoryName(fileName);

// change the extension of specific filename
string newFileName = Path.ChangeExtension(fileName, "bmp");

// get the root partition of specific file
string root = Path.GetPathRoot(fileName);

sinpin
جمعه 10 اسفند 1386, 13:34 عصر
private void Form1_Load(object sender, EventArgs e)
{
NotifyIcon notify = new NotifyIcon();
notify.Icon = this.Icon;
notify.Visible = true;

// duration of show baloon as milisecond
int n = 3000;

// show baloon
notify.ShowBalloonTip(n, "Hi", "Salam Donya!", ToolTipIcon.Info);

//set an event handler
notify.MouseClick += new MouseEventHandler(notify_MouseClick);
}

void notify_MouseClick(object sender, MouseEventArgs e)
{
MessageBox.Show("man click shodam!");
}

sinpin
جمعه 10 اسفند 1386, 13:50 عصر
string pcName = Environment.MachineName;

string currentUser = Environment.UserName;

string system32 = Environment.SystemDirectory;

string osVersion = Environment.OSVersion;

string domain = Environment.UserDomainName;

int cpuCount = Environment.ProcessorCount;

Mahdi.Kiani
جمعه 10 اسفند 1386, 20:01 عصر
چند تا برنامه رایگان و مفید برای دات نت کاران
ممکنه خیلی از دوستان این برنامه ها را داشته باشن
ممکن هم هست خیلی از دوستان نداشته باشن
--------------------------------------------------------





Reflector for .NET
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.

--------------------------------------------------------------

Resourcer for .NET
Resourcer is an editor for .resources binaries and .resX XML file formats used with the .NET platform. Resourcer allows editing of name/string pairs, import of bitmaps/icons and and merging of resources from different sources.

--------------------------------------------------------------

CommandBar for .NET
The CommandBar class library extends Windows Forms with classes for CommandBar, ReBar, CoolBar, and bitmaped menu controls. 24 bit alpha channel images are supported on Windows 2000

--------------------------------------------------------------


Writer for .NET
Writer is a simple WYSIWYG editor for HTML files. The program allows you to edit HTML files using simple editing functionality like Undo, Redo, Cut, Copy, Paste, Find, Replace. Writer also supports text layout and formatting, hyperlink editing and insertion of dates and pictures.

--------------------------------------------------------------

Mapack for .NET
Mapack is a .NET class library for basic linear algebra computations. It supports Norm1, Norm2, Frobenius Norm, Determinant, Infinity Norm, Rank, Condition, Trace, Cholesky, LU, QR, single value decomposition, least squares solver and eigenproblems.



--------------------------------------------------------

جهت دانلود برنامه ها به اینجا (http://www.aisto.com/roeder/dotnet/) مراجعه نمایید
موفق باشید

Masoud_TB
شنبه 11 اسفند 1386, 11:26 صبح
می تونین لیست تمامی Shortcut های موجود در Visual Studio 2005 رو از اینجا دانلود کنین:

Visual Studio .NET 2005 C# Keybinding (http://rapidshare.com/files/72147902/VCSharp_2005_keybinding.pdf)

و برای دوستانی که Visual Studio .NET 2008 استفاده می کنند:

Visual Studio .NET 2008 C# Keybinding (http://rapidshare.com/files/72330593/Visual_C_Sharp_2008.zip)

Masoud_TB
شنبه 11 اسفند 1386, 11:31 صبح
برای اینکه بتونین لیست کاربرانی که عضو گروه خاصی هستند رو به دست بیارین از این کد استفاده کنین:



DirectoryEntry localMachine = new DirectoryEntry( "WinNT://"+
Environment.MachineName);
DirectoryEntry admGroup = localMachine.Children.Find(txtGroupName.Text, "group");
object members = admGroup.Invoke("members", null);
foreach (object groupMember in (IEnumerable)members)
{
DirectoryEntry member = new DirectoryEntry(groupMember);
Console.WriteLine("UserName: {0}",member.Name);
}

Masoud_TB
شنبه 11 اسفند 1386, 11:41 صبح
برای اینکه متوجه بشین که آیا کاربر جاری تون عضوی از گروه کاربران Administrator هست یا نه از این کد استفاده کنین:



WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
string role = "BUILTIN\\Administrators";
bool IsAdmin = principal.IsInRole(role));

Masoud_TB
شنبه 11 اسفند 1386, 11:48 صبح
حتمالا دیدید که توی بعضی نرم افزار ها داخل یک منو آیتم یک کنترل وجود داره. مثلا یه منو که توی اون یک ComboBox نشون داده می شود. یا هر کنترل دیگری شبیه به اون.
برای اینکار یه کلاسی وجود داره به نام ToolStripControlHost
شما می تونین با ساختن یک object از این کلاس و پاس کردن کنترل مورد نظر در Constructor اون و در نهایت اضافه کردن اون به مثلا Menu یا ContextMenu و یا Toolbar از اون استفاده کنین.
کد:


private void Form1_Load(object sender, EventArgs e)
{
MonthCalendar picker = new MonthCalendar();
picker.DateSelected += new DateRangeEventHandler(picker_DateSelected);
ToolStripControlHost host = new ToolStripControlHost(picker);
fileToolStripMenuItem.DropDownItems.Insert(2,host) ;
}
void picker_DateSelected(object sender, DateRangeEventArgs e)
{
MonthCalendar picker = ((MonthCalendar)sender);
this.Text = picker.SelectionStart.ToString("yyyy/MMM/dd");
}

نتیجه این کد بالا این تصویر می شود.
این سوال MCTS Windows 70-526 بود.

az_farzaneh
شنبه 11 اسفند 1386, 23:30 عصر
فرض کنید متود ساده زیر را داریم و میخواهیم به عنوان پارامتر به متود دیگری ارسال کنیم


public void DisplayNumber(int num)
{
MessageBox.Show(string.Format("The value is {0}", num));
}
ابتدا نوع داده ای جدیدی ازdelegate با همین signature یعنی از نوع void و با پارامتر ی از نوع int تعریف می کنیم:


public delegate void ProcessNumber(int number);

سپس متغیری از نوع داده ا ی delegate تعریف شده به صورت زیر اعلان میکنیم :


ProcessNumber pn = new ProcessNumber(DisplayNumber);

حال میتوان این متغیر را به عنوان پارامتر به هر متود دلخواهی صادر کرد (مثلا متود زیر):

public int MultiplyNumbers(int a, int b, ProcessNumber pn)
{
int op = a * b;
pn(op);
return op;
}
با این فراخوانی :

MultiplyNumbers(4, 5, pn);

منبع:سری های آموزشی TestOut C#‎‎ for programmers
http://www.testout.com

sinpin
دوشنبه 13 اسفند 1386, 10:40 صبح
using System.Diagnostics;
private static string CaptureCommandPromptOutput(string command, string argument)
{
ProcessStartInfo info = new ProcessStartInfo(command, argument);
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
info.CreateNoWindow = true;
Process p = new Process();
p.StartInfo = info;
p.Start();
return p.StandardOutput.ReadToEnd();
}مثال از نحوه استفاده :

richTextBox1.Text = CaptureCommandPromptOutput("cmd", "/c dir");و یا :

richTextBox1.Text = CaptureCommandPromptOutput("Ping", "127.0.0.1");

sinpin
دوشنبه 13 اسفند 1386, 10:47 صبح
using System.Diagnostics;
Process.Start("NET", @"USE U: \\127.0.0.1\Sinpin /PERSISTENT:YES");

Mahdi.Kiani
دوشنبه 13 اسفند 1386, 17:50 عصر
API مربوطه



[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
const uint EM_GETLINECOUNT = 0xBA;
IntPtr wp=IntPtr.Zero;
IntPtr lp=IntPtr.Zero;


طریقه استفاده


IntPtr lines = SendMessage(textBox1.Handle, EM_GETLINECOUNT,wp,lp);
MessageBox.Show(lines.ToInt32().ToString());


نمونه برنامه (http://barnamenevis.org/attachment.php?attachmentid=13656&d=1200287594)

Mahdi.Kiani
دوشنبه 13 اسفند 1386, 18:42 عصر
1
Video How to: Creating a Simple Data Application (http://msdn2.microsoft.com/en-us/library/bb820887.aspx)

video summary




Displaying data from a database on a Windows Form is easy with Visual Studio 2008. You can display data on forms in Windows applications by dragging items from the Data Sources window onto your form.

This video shows how to create an application that displays data from two related tables in a database. The following tasks are included in the process:

How to create a Windows-based application.

How to create and configure a dataset that is based on the Customers and Orders tables in the Northwind database by using the Data Source Configuration Wizard.

How to add controls to display data from the Customers table.

How to test the application, selecting different customers and verifying that the correct orders are shown for the selected customer.

How to modify data and save it back to the database.


watch the video (http://go.microsoft.com/fwlink/?LinkId=100477)

download the video (http://go.microsoft.com/fwlink/?LinkId=100478)

------------------------------------------------------------
2)
Creating an N-Tier Data Application (http://msdn2.microsoft.com/en-us/library/cc178916.aspx)
-------------------------------------------------------------
3)
Writing Queries in C# (LINQ) (http://msdn2.microsoft.com/en-us/library/bb820881.aspx)
-----------------------------------------------------------
4)
Create a C# WPF Application (http://msdn2.microsoft.com/en-us/library/bb820878.aspx)

--------------------------------------------------





اطلاعات مربوط به ویدئو های 2 تا 4 را با کلیک کردن بر روی آن ها می تونید مشاهده کنید.

sinpin
سه شنبه 14 اسفند 1386, 09:36 صبح
حذف تمامی whiteSpace ها :

//STRIPS WHITE SPACES FROM BOTH START + FINSIHE
string Name = " String Manipulation " ;
string NewName = Name.Trim();حذف whiteSpace ها (یا حروفی خاص) از آخر رشته :

//STRIPS CHRS FROM THE END OF THE STRING
string Name = " String Manipulation " ;
//SET OUT CHRS TO STRIP FROM END
char[] MyChar = {' ','n'};
string NewName = Name.TrimEnd(MyChar);حذف whiteSpace ها (یا حروفی خاص) از ابتدای رشته :

//STRIPS CHRS FROM THE START OF THE STRING
string Name = " String Manipulation " ;
//SET OUT CHRS TO STRIP FROM END
char[] MyChar = {' ','S'};
string NewName = Name.TrimStart(MyChar);جستجوی یک رشته ی در رشته ی دیگر :

string MainString = "String Manipulation";
string SearchString = "pul";
int FirstChr = MainString.IndexOf(SearchString);جایگزین کردن بخشی از یک رشته :

string MainString "String Manipulatin";
string CorrectString = MainString.Replace("Manipulatin", "Manipulation");حذف کردن بخشی از یک رشته :

string MainString = "S1111tring Manipulation";
string NewString = MainString.Remove(1,4);تفکیک یک رشته :

string MainString = "String Manipulation";
string [] Split = MainString.Split(new Char [] {' '});
//SHOW RESULT
MessageBox.Show(Convert.ToString(Split[0]));
MessageBox.Show(Convert.ToString(Split[1]));منبع : http://www.developerfusion.co.uk/show/4398/

danial82
سه شنبه 14 اسفند 1386, 10:01 صبح
مقایسه دو رشته بدون توجه به بزرگی و کوچکی حروف


if (string.Compare(str1, str2, false) == 0) // Case Insensitive!
Console.WriteLine("Two strings are similar to each other.");


مقایسه دو رشته با توجه به بزرگی و کوچکی حروف


if (string.Compare(str1, str2, true) == 0) // Case Insensitive!
Console.WriteLine("Two strings are similar to each other.");



برگرداندن یک رشته ار داخل یک رشته


string MainString = "String Manipulation";
//SHOW RESULT
MessageBox.Show(str1.Substring(6, 12));


روش دیگر استفاده از تابع Split



string[] aryStrings;

str1 = "Hello,How;Are,You";
aryStrings = str1.Split(',', ';', '*');
foreach (string str in aryStrings)
MessageBox.Show("{0}", str);

sinpin
چهارشنبه 15 اسفند 1386, 10:02 صبح
هر دو در استفاده از الگوریتم فشرده سازی دقیقا یکسان هستند و تنها تفاوتی بین آن دو اینستکه :
با استفاده از GZip میتوانید اطلاعات اضافه ای (metadata) را به قسمت header و footer فایل خروجی اضافه نمایید لذا اندکی میتواند حجم خروجی آن از Deflate بیشتر شود.

بعبارت دقیقتر کلاس GZipStream یک لفافه (wrapper) بر روی کلاس DeflateStream است و روش فشردن اطلاعات در هردو کلاس مطابق تعریف RFC 1952 (http://www.faqs.org/rfcs/rfc1952.html) است.

منبع : http://msdn2.microsoft.com/en-us/magazine/cc163727.aspx

sinpin
جمعه 17 اسفند 1386, 08:44 صبح
از این کامپوننت برای نمایش پیغامهای خطا و هشدار در UI استفاده میشود.

private void textBox1_Leave(object sender, EventArgs e)
{
ErrorProvider ep = new ErrorProvider();
if (string.IsNullOrEmpty(textBox1.Text))
ep.SetError(textBox1, "نمیتواند خالی باشد");
else
ep.SetError(textBox1, "");
}

sinpin
جمعه 17 اسفند 1386, 10:35 صبح
int[] someArray = new int[5] { 1, 2, 3, 4, 5 };
Array.Reverse(someArray);

sinpin
جمعه 17 اسفند 1386, 10:37 صبح
//You have a byte[] representing some binary information, such as a bitmap.
// You need to encode this data into a string so that it can be sent over
// a binary-unfriendly transport, such as email.

public string Base64EncodeBytes(byte[] inputBytes)
{
return (Convert.ToBase64String(inputBytes));
}




//You have a String that containsinformation such asa bitmap encoded
// asbas e64. You need to decode this data (which may have been embedded in an
// email message) from a String into a byte[] so that you can access
// the original binary.

public byte[] Base64DecodeString(string inputStr)
{
byte[] decodedByteArray = Convert.FromBase64String(inputStr);
return (decodedByteArray);
}منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 10:41 صبح
string testStr = "Sinpin";
foreach (char c in testStr)
MessageBox.Show(c.ToString());
string testStr = "Sinpin";
for (int counter = 0; counter < testStr.Length; counter++)
MessageBox.Show(testStr[counter].ToString());

و البته روش اول بهینه تر است.

sinpin
جمعه 17 اسفند 1386, 10:42 صبح
حذف حروف خاص

You have a string with a specific set of characters, such as spaces, tabs, escaped single double quotes, any type of punctuation character(s), or some other character(s), at the beginning and/or end of a string. You want a simple way to remove these characters.

private void PruningCharacters()
{
string foo = "--TEST--";
Console.WriteLine(foo.Trim(new char[] {'-'})); // Displays "TEST"
foo = ",-TEST-,-";
Console.WriteLine(foo.Trim(new char[] {'-',','})); // Displays "TEST"
foo = "--TEST--";
Console.WriteLine(foo.TrimStart(new char[] {'-'})); // Displays "TEST--"
foo = ",-TEST-,-";
Console.WriteLine(foo.TrimStart(new char[] {'-',','})); // Displays "TEST-,-"
foo = "--TEST--";
Console.WriteLine(foo.TrimEnd(new char[] {'-'})); // Displays "--TEST"
foo = ",-TEST-,-";
Console.WriteLine(foo.TrimEnd(new char[] {'-',','})); //Displays ",-TEST"
}منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 10:50 صبح
using System.Text.RegularExpressions;

public static long LineCount2(string source, bool isFileName)
{
if (source != null)
{
string text = source;
long numOfLines = 0;
if (isFileName)
{
using (FileStream FS = new FileStream(source, FileMode.Open,
FileAccess.Read, FileShare.Read))
{
using (StreamReader SR = new StreamReader(FS))
{
while (text != null)
{
text = SR.ReadLine();
if (text != null)
{
++numOfLines;
}
}
}
}
return (numOfLines);
}
else
{
Regex RE = new Regex("\n", RegexOptions.Multiline);
MatchCollection theMatches = RE.Matches(text);
return (theMatches.Count + 1);
}
}
else
{
// Handle a null source here.
return (0);
}
}

منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 10:52 صبح
//Using the Split instance method on the String class, you can place the delimited
//information into an array in as little as a single line of code.

private void GetItemsFromDelimitedString()
{
string delimitedInfo = "100,200,400,3,67";
string[] discreteInfo = delimitedInfo.Split(new char[] { ',' });
foreach (string Data in discreteInfo)
MessageBox.Show(Data);
}

منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 10:56 صبح
using System.IO;You need to rename a file.Unfortunately, there isno specific rename method that can be used to rename a file. Instead, you can use the static Move method of the File class or the instance MoveTo method of the FileInfo class. The static File.Move method can be used to rename a file in the following manner:

public static void RenameFile(string originalName, string newName)
{
File.Move(originalName, newName);
}
public static void Rename(FileInfo originalFile, string newName)
{
originalFile.MoveTo(newName);
}منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 11:01 صبح
public static double ConvertDegreesToRadians(double degrees)
{
return ((Math.PI / 180) * degrees);
}
public static double ConvertRadiansToDegrees(double radians)
{
return ((180 / Math.PI) * radians);
}

sinpin
جمعه 17 اسفند 1386, 11:04 صبح
using System.Net;
public string ConvertIP2HostName(string ip)
{
IPHostEntry iphost = Dns.GetHostEntry(ip);
return iphost.HostName;
}
public string HostNameToIP(string hostName)
{
IPHostEntry iphost = System.Net.Dns.GetHostEntry(hostName);
IPAddress[] addresses = iphost.AddressList;
StringBuilder addressList = new StringBuilder();
foreach (IPAddress address in addresses)
{
addressList.AppendFormat("IP Address: {0};", address.ToString());
}
return addressList.ToString();
}نحوه ی استفاده :

private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show( Class4.ConvertIP2HostName("127.0.0.1"));
MessageBox.Show(Class4.HostNameToIP("laptop"));
}

منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 11:08 صبح
using System.IO;
public static void DisplayDirectoryTimestamps(string path)
{
Console.WriteLine(Directory.GetCreationTime(path). ToString());
Console.WriteLine(Directory.GetLastAccessTime(path ).ToString());
Console.WriteLine(Directory.GetLastWriteTime(path) .ToString());
}
public static void DisplayTimestamps(DirectoryInfo dirInfo)
{
Console.WriteLine(dirInfo.CreationTime.ToString()) ;
Console.WriteLine(dirInfo.LastAccessTime.ToString( ));
Console.WriteLine(dirInfo.LastWriteTime.ToString() );
}
public static void DisplayDirectoryHiddenAttribute(string path)
{
DirectoryInfo dirInfo = new DirectoryInfo(path);
// Display whether this directory is hidden
Console.WriteLine("Is directory hidden? = " +
((dirInfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden));
}منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 11:09 صبح
using System.IO;
public static void ModifyDirectoryTimestamps(string path, DateTime dt)
{
Directory.SetCreationTime(path, dt);
Directory.SetLastAccessTime(path, dt);
Directory.SetLastWriteTime(path, dt);
}
public static void ModifyTimestamps(DirectoryInfo dirInfo, DateTime dt)
{
dirInfo.CreationTime = dt;
dirInfo.LastAccessTime = dt;
dirInfo.LastWriteTime = dt;
}
public static void MakeDirectoryHidden(DirectoryInfo dirInfo)
{
// Modify this directory's attributes
dirInfo.Attributes |= FileAttributes.Hidden;
}منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 11:12 صبح
using System.IO;


public static void RenameDirectory(string originalName, string newName)
{
try
{
// "rename" it
Directory.Move(originalName, newName);
}
catch (IOException ioe)
{
// most likely given the directory exists or isn't empty
Console.WriteLine(ioe.ToString());
}
}

منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 11:18 صبح
using System.IO;


public static void DisplayFileTimestamps(string path)
{
Console.WriteLine(File.GetCreationTime(path));
Console.WriteLine(File.GetLastAccessTime(path));
Console.WriteLine(File.GetLastWriteTime(path));
}


public static void DisplayFileInfoTimestamps(FileInfo fileInfo)
{
Console.WriteLine(fileInfo.CreationTime.ToString() );
Console.WriteLine(fileInfo.LastAccessTime.ToString ());
Console.WriteLine(fileInfo.LastWriteTime.ToString( ));
}


public static void DisplayFileHiddenAttribute(string path)
{
if (File.Exists(path))
{
FileInfo fileInfo = new FileInfo(path);
// Display whether this file is hidden
Console.WriteLine("Is file hidden? = " +
((fileInfo.Attributes & FileAttributes.Hidden) ==
FileAttributes.Hidden));
}
}

منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 11:19 صبح
using System.IO;


public static void ModifyFileTimestamps(string path)
{
File.SetCreationTime(path, DateTime.Parse(@"May 10, 2003"));
File.SetLastAccessTime(path, DateTime.Parse(@"May 10, 2003"));
File.SetLastWriteTime(path, DateTime.Parse(@"May 10, 2003"));
}


public static void ModifyTimestamps(FileInfo fileInfo, DateTime dt)
{
fileInfo.CreationTime = dt;
fileInfo.LastAccessTime = dt;
fileInfo.LastWriteTime = dt;
}


public static void MakeFileHidden(FileInfo fileInfo)
{
// Modify this file's attributes
fileInfo.Attributes |= FileAttributes.Hidden;
}

منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 11:23 صبح
رُند کردن :

int x = (int)Math.Round(2.5555); // x == 3گرد کردن تا دو رقم اعشار :

decimal x = Math.Round(2.5555, 2); // x == 2.56

sinpin
جمعه 17 اسفند 1386, 11:30 صبح
You need to get a directory tree, potentially including filenames, extending from any point in the directory hierarchy


using System.IO;
public IEnumerable<FileSystemInfo> GetAllFilesAndDirectories(string dir)
{
DirectoryInfo dirInfo = new DirectoryInfo(dir);
Stack<FileSystemInfo> stack = new Stack<FileSystemInfo>();
stack.Push(dirInfo);
while (dirInfo != null || stack.Count > 0)
{
FileSystemInfo fileSystemInfo = stack.Pop();
DirectoryInfo subDirectoryInfo = fileSystemInfo as DirectoryInfo;
if (subDirectoryInfo != null)
{
yield return subDirectoryInfo;
foreach (FileSystemInfo fsi in subDirectoryInfo.GetFileSystemInfos())
stack.Push(fsi);
dirInfo = subDirectoryInfo;
}
else
{
yield return fileSystemInfo;
dirInfo = null;
}
}
}منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
جمعه 17 اسفند 1386, 11:37 صبح
decimal d = 123.234M;
decimal i = Math.Truncate(d)

sinpin
جمعه 17 اسفند 1386, 11:48 صبح
این مقادیر بصورت خواص درونکار وجود دارند.
برای مثال :

Int16.MaxValue;
Int16.MinValue;

Int64.MaxValue;
Int64.MinValue;

Double.MaxValue;
Double.MinValue;

...

sinpin
جمعه 17 اسفند 1386, 12:06 عصر
double i = Math.Pow(4, 2); // = 16;
double j = Math.Pow(4, .5); // = 2;
پارامتر اول : عدد دلخواه
پارامتر دوم : توان عدد (از اعداد بین 0 تا 1 برای جذر گرفتن استفاده کنید)

sinpin
جمعه 17 اسفند 1386, 14:45 عصر
string str;
if (string.IsNullOrEmpty(str))
{
...
}و یا :

string str;
if (str.Trim() == "")
{
...
}و یا :

string str;
if (str == string.Empty)
{
...
}استفاده از روش اول توصیه شده است.

az_farzaneh
جمعه 17 اسفند 1386, 19:13 عصر
int[] array ={ 4, 10, 17, 5, 1 };
Array.Sort(array);

sinpin
جمعه 17 اسفند 1386, 19:32 عصر
خاصیت SelectionStart از کنترل TextBoxBase یک عدد برمیگرداند که معادل مکان فعلی کرسر است :


private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
this.Text = textBox1.SelectionStart.ToString();
}
یافتن رشته انتخاب شده در یک تکست باکس :

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(textBox1.SelectedText);
}
یافتن طول رشته انتخاب شده :

int n = textBox1.SelectionLength;

az_farzaneh
جمعه 17 اسفند 1386, 19:39 عصر
ArrayList list = new ArrayList();
list.Add(new Employee());
list.Add("farzaneh");
list.Add(1);
object[] array = new object
[list.Count];
list.CopyTo(array, 0);

sinpin
جمعه 17 اسفند 1386, 22:12 عصر
private void button2_Click(object sender, EventArgs e)
{
int n = (int) listView1.View;
if (n == 4)
n = -1;
listView1.View = (View)Enum.ToObject(typeof(View), ++n);
}

sinpin
جمعه 17 اسفند 1386, 22:27 عصر
با زدن دکمه جهت نمای چپ کرسر چشمک زن به سمت راست میرود و بلعکس :


private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Left:
e.Handled = true;
if (textBox1.SelectionStart <= textBox1.Text.Length - 1)
textBox1.SelectionStart++;
break;
case Keys.Right:
e.Handled = true;
if (textBox1.SelectionStart >= 1)
textBox1.SelectionStart--;
break;
}
}

sinpin
جمعه 17 اسفند 1386, 22:44 عصر
private void Form1_Load(object sender, EventArgs e)
{
PictureBox pic = new PictureBox();
//pic.Image = Image.FromFile("آدرس فایل");
pic.Image = SystemIcons.Information.ToBitmap();;
textBox1.Controls.Add(pic);
}

sinpin
جمعه 17 اسفند 1386, 23:11 عصر
ابتدا جدول مورد نظر رو خالی کرده :

DELETE FROM <table name>
و سپس کوئری زیر را روی آن اجرا نمایید :

DBCC CHECKIDENT (<table name>, RESEED, 0)

منبع : http://blogs.microsoft.co.il/blogs/maordavid/archive/2007/10/08/reset-autonumber-identity-column-in-sql-server.aspx

sinpin
جمعه 17 اسفند 1386, 23:28 عصر
این لیست به مرور تکمیلتر خواهد شد.


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

sinpin
جمعه 17 اسفند 1386, 23:42 عصر
در ساده ترین حالت اینکار معمولا از طریق GUID انجام میشود :

private string GenerateId1()
{
return Guid.NewGuid().ToString();
}نمونه ای از خروجی:
c1eab2fa-63bb-426f-a2ff-dd87b03c0aa0یک الگوریتم دیگر :

private string GenerateId2()
{
long i = 1;
foreach (byte b in Guid.NewGuid().ToByteArray())
{
i *= ((int)b + 1);
}
return string.Format("{0:x}", i - DateTime.Now.Ticks);
}نمونه ای از خروجی:
4f2014c22f7c88eaیک الگوریتم دیگر :

private long GenerateId3()
{
byte[] buffer = Guid.NewGuid().ToByteArray();
return BitConverter.ToInt64(buffer, 0);
}نمونه ای از خروجی :
5209165259893891216منبع : http://www.csharphelp.com/archives4/archive691.html

pd_ze62
شنبه 18 اسفند 1386, 22:29 عصر
با فشار دادن دکمه،زیررشته ی موجود در تکس باکس که از اندیس 12 شروع می شود با *** جایگزین می شود



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

sinpin
یک شنبه 19 اسفند 1386, 10:58 صبح
using System.Net;برای سیستم لوکال :

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

IPAddress[] ipList = Dns.GetHostAddresses("Sinpin");
foreach (IPAddress ip in ipList )
MessageBox.Show(ip.ToString());

sinpin
یک شنبه 19 اسفند 1386, 11:04 صبح
string pcName = Environment.MachineName;و یا :


using System.Net;
string pcName = Dns.GetHostName();

sinpin
یک شنبه 19 اسفند 1386, 19:06 عصر
گاهی لازم است در زمان اجرا یک رویداد رو موقتا و یا برای همیشه غیر فعال کنیم. برای اینکار با استفاده از =- ایونت هندلر مورد نظر را از رویداد حذف میکنیم.

مثال - فرض کنید که در جایی لازم است مقدار یک TextBox رو عوض کنیم بدون آنکه بخواهیم رویداد TextChanged آن تحریک شود (البته در اینجا بصورت موقت و بعد از تخصیص مقدار آن را به حالت اول برمیگردانیم) :


private void button1_Click(object sender, EventArgs e)
{
// remove event handler
textBox1.TextChanged -= new EventHandler(textBox1_TextChanged);

textBox1.Text = "salam";

// add event handler
textBox1.TextChanged += new EventHandler(textBox1_TextChanged);
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
....
MessageBox.Show("TextChanged");
....
}

sinpin
یک شنبه 19 اسفند 1386, 21:40 عصر
using System.Drawing.Text;

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

sinpin
یک شنبه 19 اسفند 1386, 23:18 عصر
richTextBox1.SelectionFont = new Font(richTextBox1.Font,
FontStyle.Bold | FontStyle.Underline);
richTextBox1.SelectionColor = Color.Red;

sinpin
دوشنبه 20 اسفند 1386, 09:49 صبح
یک - http://www.iconfinder.net (http://www.iconfinder.net/)

دو - http://iconspedia.com (http://iconspedia.com/)

سه - http://www.famfamfam.com/lab/icons (http://www.famfamfam.com/lab/icons/)

چهار- http://www.cartosoft.com/mapicons (http://www.cartosoft.com/mapicons/)

پنج - http://feedicons.com (http://feedicons.com/)

شش - http://www.iconfactory.com (http://www.iconfactory.com/)

هفت - http://www.icons-online.com (http://www.icons-online.com/)

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

sinpin
دوشنبه 20 اسفند 1386, 10:35 صبح
تبدیل یک متغیر بولین به نوع صحیح :

bool flag = false;
int i = (flag ? 1 : 0);تبدیل یک عدد صحیح به متناظر بولین آن :

int i = 1;
bool flag = (i == 1 ? true : false);

تبدیل یک رشته به متناظر بولین آن :

string str = "Yes";
bool flag = str.ToLower() == "yes" ? true : false;

hassan razavi
دوشنبه 20 اسفند 1386, 14:40 عصر
myDataset.Table["myTable"].Compute("Sum(myFiledname)","FilterCreatia");

hassan razavi
دوشنبه 20 اسفند 1386, 14:45 عصر
add Reference Microsoft.TAPI32

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

hassan razavi
دوشنبه 20 اسفند 1386, 15:29 عصر
در فایل 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 ایجاد شده می باشد که از آن می توان استفاده های مختلفی کرد.

-------------------------------------------------------
نقل قول مستقیم از لینک زیر (ایجاد شده توسط رها)
http://barnamenevis.org/forum/showthread.php?t=93430&highlight=ThreadException

shahali
دوشنبه 20 اسفند 1386, 17:53 عصر
با استفاده از بافر می توان روی مقدار کپی شدن یه فایل مدیریت کرد و مانور داد

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

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());
}

sinpin
سه شنبه 21 اسفند 1386, 09:28 صبح
Graphics txtGraphics = this.textBox1.CreateGraphics();
float width = txtGraphics.MeasureString(textBox1.Text, textBox1.Font).Width;
this.Text = width.ToString();
txtGraphics.Dispose();

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

sinpin
سه شنبه 21 اسفند 1386, 17:18 عصر
با فرض داشتن یک 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

sinpin
سه شنبه 21 اسفند 1386, 17:24 عصر
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

sinpin
سه شنبه 21 اسفند 1386, 17:28 عصر
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

sinpin
سه شنبه 21 اسفند 1386, 17:29 عصر
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

sinpin
سه شنبه 21 اسفند 1386, 17:45 عصر
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

sinpin
سه شنبه 21 اسفند 1386, 17:50 عصر
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/string-formatting-in-csharp/

sinpin
سه شنبه 21 اسفند 1386, 17:55 عصر
using System.IO;


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

dr_csharp
چهارشنبه 22 اسفند 1386, 16:43 عصر
مثلا یه برنامه داریم که به کاربر قابلیت ذخیره ی فایل میده !
خوب بدلیل شرایط امنیتی بهتره دسترسی کاربر به درایو اصلی ویندوز محدود بشه !برای اینکار بصورت زیر عمل میکنیم :
ابتدا 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();
}

sinpin
چهارشنبه 22 اسفند 1386, 22:32 عصر
برای دانلود سورس کدهای مربوط به کتاب مورد نظر خود به لینکهای زیر مراجعه کنید :


Apress
http://www.apress.com/book/sourcecode

Wrox

http://www.wrox.com/WileyCDA/Section/id-105127.html
http://www.wrox.com/WileyCDA/Section/id-105077.html
این لیست به مرور تکمیلتر خواهد شد.

sinpin
پنج شنبه 23 اسفند 1386, 13:48 عصر
ابتدا روی پروژه کلیک راست کرده، 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.amazon.com/Visual-2005-Recipes-Problem-Solution-Approach/dp/1590595890)

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

sinpin
پنج شنبه 23 اسفند 1386, 13:58 عصر
// 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 (http://www.amazon.com/Visual-2005-Recipes-Problem-Solution-Approach/dp/1590595890)

sinpin
پنج شنبه 23 اسفند 1386, 14:09 عصر
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 (http://www.amazon.com/Visual-2005-Recipes-Problem-Solution-Approach/dp/1590595890)

sinpin
پنج شنبه 23 اسفند 1386, 14:12 عصر
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 (http://www.amazon.com/Visual-2005-Recipes-Problem-Solution-Approach/dp/1590595890)

sinpin
پنج شنبه 23 اسفند 1386, 14:19 عصر
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 (http://www.amazon.com/Visual-2005-Recipes-Problem-Solution-Approach/dp/1590595890)

sinpin
پنج شنبه 23 اسفند 1386, 14:24 عصر
ابتدا روی پروژه کلیک راست کرده، 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 (http://www.amazon.com/Visual-2005-Recipes-Problem-Solution-Approach/dp/1590595890)

sinpin
پنج شنبه 23 اسفند 1386, 14:30 عصر
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 (http://www.amazon.com/Visual-2005-Recipes-Problem-Solution-Approach/dp/1590595890)

sinpin
جمعه 24 اسفند 1386, 22:42 عصر
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 (http://www.gotdotnet.com/workspaces/workspace.aspx?id=112b5449-f702-46e2-87fa-86bdf39a17dd)). 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 (http://msdn.microsoft.com/library/en-us/cpref/html/cpref_start.asp) style web pages.
یک نمونه ی آنلاین از خروجی NDoc (http://ndoc.sourceforge.net/reference)
توضیحات بیشتر در Wiki (http://en.wikipedia.org/wiki/NDoc)
برخی از تصاویر برنامه (http://sourceforge.net/project/screenshots.php?group_id=36057&ssid=306)
دانلود و آشنایی با برنامه (http://ndoc.sourceforge.net)
آشنایی با (http://en.wikipedia.org/wiki/Documentation_generator)Documentation generator (http://en.wikipedia.org/wiki/Documentation_generator)
مقایسه بین انواع Documentation Generator ها (http://en.wikipedia.org/wiki/Comparison_of_documentation_generators)

sinpin
جمعه 24 اسفند 1386, 23:10 عصر
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 رایگان نیست. جهت مقایسه قیمت نسخه های مختلف آن میتوانید به این لینک (http://www.codesmithtools.com/store/pricing.aspx)مراجعه کنید.
سایت اصلی CodeSmtih جهت دانلود نسخه آزمایشی (http://www.codesmithtools.com/)
دیدن تصاویری از برنامه (http://community.codesmithtools.com/photos/cs40/default.aspx)
آموزش تصویری ساخت یک Data Access Layer (مطابق با Microsoft’s Enterprise Library) در کمتر از 15 دقیقه (http://community.codesmithtools.com/blogs/tutorials/archive/2006/02/13/nettiers.aspx)

sinpin
جمعه 24 اسفند 1386, 23:41 عصر
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 مگابایت (http://nettiers.com/Download.aspx)
آشنایی بیشتر (http://docs.nettiers.com/Introduction.ashx)
تاریخچه تغییرات (https://nettiers.svn.sourceforge.net/svnroot/nettiers/source/tags/2.2.0.603/Source/changes.log)

sinpin
جمعه 24 اسفند 1386, 23:57 عصر
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/archive/2006/10/31/912569.aspx
چند نمونه برنامه ی آماده :
http://www.codeproject.com/KB/cs/wallpaperchanger.aspx
http://www.codeproject.com/KB/applications/wallpaperq.aspx

sinpin
شنبه 25 اسفند 1386, 00:12 صبح
ابتدا 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/archive/2003/05/22/7410.aspx

sinpin
شنبه 25 اسفند 1386, 10:48 صبح
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/archive/2007/03/16/109007.aspx

sinpin
شنبه 25 اسفند 1386, 10:55 صبح
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/archive/index.php/t-246724.html

sinpin
شنبه 25 اسفند 1386, 11:00 صبح
http://www.pinvoke.net (http://www.pinvoke.net/)


PInvoke.net is primarily a wiki, allowing developers to find, edit and add PInvoke* (http://www.pinvoke.net/#definePinvoke) 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).



Microsoft Windows API Reference (http://msdn2.microsoft.com/en-us/library/aa383749%28VS.85%29.aspx)

he following topics provide information about the programming elements included in the Windows API.
Functions in Alphabetical Order (http://msdn2.microsoft.com/en-us/library/aa383688%28VS.85%29.aspx)
Functions by Category (http://msdn2.microsoft.com/en-us/library/aa383686%28VS.85%29.aspx)
Functions by Release (http://msdn2.microsoft.com/en-us/library/aa383687%28VS.85%29.aspx)
Windows Data Types (http://msdn2.microsoft.com/en-us/library/aa383751%28VS.85%29.aspx)
Compatibility with 16-bit Windows (http://msdn2.microsoft.com/en-us/library/aa383674%28VS.85%29.aspx)


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

sinpin
شنبه 25 اسفند 1386, 11:16 صبح
http://www.holub.com/goodies/uml/index.html


http://www.diku.dk/forskning/distlab/Graduate_Courses/E97-OOAD/UML/UML_Poster/uml_poster.html


http://www.digilife.be/quickreferences/QRC/UML%20Quick%20Reference%20Card.pdf
http://www.digilife.be/quickreferences/QRC/UML%20Reference%20Card.pdf


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

sinpin
شنبه 25 اسفند 1386, 11:25 صبح
یک 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>سایت اصلی محصول (http://www.roland-weigelt.de/ghostdoc/)
دانلود نسخه مختص ویژوال استادیو 2005 (http://www.roland-weigelt.de/ghostdoc/download05.php?version=2.1.3for2005)
دانلود نسخه مختص ویژوال استادیو (http://www.roland-weigelt.de/ghostdoc/download08.php?version=2.1.3for2008)2008 (http://www.roland-weigelt.de/ghostdoc/download08.php?version=2.1.3for2008)



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.

sinpin
شنبه 25 اسفند 1386, 17:17 عصر
توسط این برنامه کوچک و رایگان میتوانید فایل اجرایی و اسمبلیهای ایجاد شده توسط دات نت رو مورد بررسی قرار داده و آنها را به سورس اولیه برگردانید.
از طریق این برنامه حتی میتوانید سورس کتابخانه های دات نت (برای مثال سورس کلاس ArrayList و ...) رو نیز مشاهده نمایید.

http://www.aisto.com/roeder/dotnet/Reflector.png


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 (http://www.aisto.com/roeder/dotnet/Download.aspx?File=Reflector) - .NET Reflector, Version 5.1.0.0, Add-Ins (http://www.codeplex.com/reflectoraddins)
دانلود برنامه و مشاهده سایت اصلی (http://www.aisto.com/roeder/dotnet/)
Add-in هایی مشابه جهت توسعه (http://www.codeplex.com/reflectoraddins)IDE (http://www.codeplex.com/reflectoraddins)
و این هم Reflexil (http://sebastien.lebreton.free.fr/reflexil/)

sinpin
شنبه 25 اسفند 1386, 17:36 عصر
NHibernate ابزاری رایگان و سورس باز است که برای نگاشت بین OO و RD در دات نت استفاده میشود. (و یا بصورت خلاصه یک ORM (http://en.wikipedia.org/wiki/Object-relational_mapping))
این ابزار مشابه آینه وار محصولی چون Hibernate (http://en.wikipedia.org/wiki/Hibernate_%28Java%29) است که دقیقا به همین منظور و برای جاوا کارها ایجاد شده است.


NHibernate is an Object-relational mapping (http://en.wikipedia.org/wiki/Object-relational_mapping) (ORM) solution for the Microsoft .NET (http://en.wikipedia.org/wiki/.NET_Framework) platform: it provides an easy to use framework (http://en.wikipedia.org/wiki/Software_framework) for mapping an object-oriented (http://en.wikipedia.org/wiki/Object-oriented_programming) domain model (http://en.wikipedia.org/wiki/Domain_model) to a traditional relational database (http://en.wikipedia.org/wiki/Relational_database). Its purpose is to relieve the developer from a significant amount of relational data persistence (http://en.wikipedia.org/wiki/Persistence_%28computer_science%29)-related programming tasks.
NHibernate is free (http://en.wikipedia.org/wiki/Free_software) as open source (http://en.wikipedia.org/wiki/Open_source_software) software that is distributed under the GNU Lesser General Public License (http://en.wikipedia.org/wiki/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 (http://barnamenevis.org/forum/www.nhibernate.org)دانلود برنامه (http://sourceforge.net/projects/nhibernate)
مستندات و راهنما (http://www.hibernate.org/22.html)
اطلاعات بیشتر (http://en.wikipedia.org/wiki/NHibernate)

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

برخی از ویژگیها :

Leading .NET Code Security
Namespace/Type/Method/Field renaming using our patented Overload-InductionTM renaming system (http://www.preemptive.com/products/dotfuscator/FAQ.html#What%20is%20OI)
Enhanced Overload Induction (http://www.preemptive.com/products/dotfuscator/FAQ.html#EnhancedOI)
Control Flow Obfuscation (http://www.preemptive.com/products/dotfuscator/FAQ.html#control%20flow)
Designed to stop even the best of decompilers from producing useful output.
String Encryption (http://www.preemptive.com/products/dotfuscator/FAQ.html#String%20enc)
Several predefined renaming schemes including unprintable characters
Software Watermarking (http://www.preemptive.com/products/dotfuscator/FAQ.html#What%20is%20Software%20Watermarking?)
Tamper Detection and Notification Service.NET Code Efficiency
Makes application size smaller
Pruning/Compacting - Unused Type, Method, and Field removal (http://www.preemptive.com/products/dotfuscator/FAQ.html#What%20is%20Compaction?)
Enhanced pruning and renaming reports.
Assembly Linking (http://www.preemptive.com/products/dotfuscator/FAQ.html#AssemblyLinking)سایت رسمی برنامه : http://www.preemptive.com/products/dotfuscator/index.html
سئوالاتی که مکررا پرسیده میشوند (http://www.preemptive.com/products/dotfuscator/FAQ.html)
ویژگیهای برنامه (http://www.preemptive.com/products/dotfuscator/Features.html)
دانلود نسخه آزمایشی (http://www.preemptive.com/downloads/RequestEvaluation.html)

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

sinpin
شنبه 25 اسفند 1386, 19:32 عصر
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" خواهد بود.

sinpin
شنبه 25 اسفند 1386, 19:34 عصر
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" باید باشد.

sinpin
شنبه 25 اسفند 1386, 19:40 عصر
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;
}
}

sinpin
یک شنبه 26 اسفند 1386, 11:23 صبح
در مثال زیر به کمک یک 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 ضمیمه شده است.

یک لینک مفید جهت مطالعه ی بیشتر (http://www.albahari.com/threading/part3.html)

az_farzaneh
یک شنبه 26 اسفند 1386, 12:05 عصر
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 نهفته است.

az_farzaneh
دوشنبه 27 اسفند 1386, 14:06 عصر
تعریف 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

sinpin
دوشنبه 27 اسفند 1386, 14:13 عصر
در این مقایسه سعی شده مطالب بصورت خلاصه و مفید مطرح بشه. جهت اطلاعات دقیقتر به مستندات دات نت فریمورک مراجعه نمایید.

همانطور که میدونید ما دو مدل کالکشن داریم :

کالکشنهای معمولی (مثل ArrayList)
کالکشنهای ژنریک (مثل <>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());

sinpin
سه شنبه 28 اسفند 1386, 21:16 عصر
عجب عنوان پیچیده و مبهمی شد ! (واقعا نمیشد راحتتر از این بیان کرد)

مثال :
فرض کنید که کنترل منو (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://windowsclient.net/blogs/faqs/archive/tags/Custom+Controls/default.aspx)
چند مثال :
http://www.devarticles.com/c/a/C-Sharp/Custom-Controls-and-Design-Time-Support-Part-2/3/
http://www.developerfusion.co.uk/show/4411/4 (http://www.developerfusion.co.uk/show/4411/4/)/ (http://www.developerfusion.co.uk/show/4411/4/)

raravaice
چهارشنبه 29 اسفند 1386, 14:19 عصر
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show(sender.ToString());
}



و



private void button1_Click(object sender, EventArgs e)
{
System.EventArgs arg = new System.EventArgs();
Form1_Load(button1.Text, arg);
}

sinpin
پنج شنبه 01 فروردین 1387, 17:51 عصر
private void DrawCenterString(object sender, PaintEventArgs e)
{
Control ct = sender as Control;
string text = "Middle String";
SizeF stringSize = e.Graphics.MeasureString(text, ct.Font);
e.Graphics.DrawString(text, Font,
Brushes.Red,
(ct.Width - stringSize.Width) / 2,
(ct.Height - stringSize.Height) / 2);
}به قسمت آبی رنگ که سایز نوشته رو بدست میاورد دقت کنید.

مثال - برای نوشتن در مرکز یک پنل :

private void panel1_Paint(object sender, PaintEventArgs e)
{
DrawCenterString(sender, e);
}منبع : http://www.amazon.com/GDI-Custom-Controls-Visual-2005/dp/1904811604

sinpin
پنج شنبه 01 فروردین 1387, 17:55 عصر
private void Form1_Paint(object sender, PaintEventArgs e)
{
// حالت معمولی
e.Graphics.DrawEllipse(new Pen(Color.Red, 10), 30, 30, 50, 50);

// SmoothingMode.AntiAlias روانسازی به کمک
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
e.Graphics.DrawEllipse(new Pen(Color.Blue, 10), 30, 100, 50, 50);
}منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604

sinpin
پنج شنبه 01 فروردین 1387, 18:05 عصر
private void DrawButton(Graphics g, ref Rectangle rc, ButtonState state)
{
ControlPaint.DrawButton(g, rc, state);
g.DrawString(state.ToString(), Font, Brushes.Black,
rc.Width + 5, rc.Y + (rc.Height - Font.Height) / 2);
rc.Offset(0, rc.Height + 5);
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
Rectangle rc = new Rectangle(0, 0, 50, 25);
DrawButton(e.Graphics, ref rc, ButtonState.All);
DrawButton(e.Graphics, ref rc, ButtonState.Checked);
DrawButton(e.Graphics, ref rc, ButtonState.Flat);
DrawButton(e.Graphics, ref rc, ButtonState.Inactive);
DrawButton(e.Graphics, ref rc, ButtonState.Normal);
DrawButton(e.Graphics, ref rc, ButtonState.Pushed);
}
منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604 (http://www.amazon.com/GDI-Custom-Controls-Visual-2005/dp/1904811604)

sinpin
پنج شنبه 01 فروردین 1387, 18:10 عصر
private void DrawCaptionButton(Graphics g, ref Rectangle rc,
CaptionButton button, ButtonState state)
{
ControlPaint.DrawCaptionButton(g, rc, button, state);
g.DrawString(state.ToString() + ", " + button.ToString(), Font,
Brushes.Black, rc.Width + 5, rc.Y + (rc.Height -
Font.Height) / 2);
rc.Offset(0, rc.Height + 5);
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
Rectangle rc = new Rectangle(0, 0, 25, 25);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Close,
ButtonState.All);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Help,
ButtonState.Checked);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Maximize,
ButtonState.Flat);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Minimize,
ButtonState.Inactive);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Restore,
ButtonState.Normal);
DrawCaptionButton(e.Graphics, ref rc, CaptionButton.Close,
ButtonState.Pushed);
}منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604 (http://www.amazon.com/GDI-Custom-Controls-Visual-2005/dp/1904811604)

sinpin
پنج شنبه 01 فروردین 1387, 18:14 عصر
private void DrawCheckBox(Graphics g, ref Rectangle rc, ButtonState state)
{
ControlPaint.DrawCheckBox(g, rc, state);
g.DrawString(state.ToString() , Font, Brushes.Black,
rc.Width + 5, rc.Y + (rc.Height - Font.Height) / 2);
rc.Offset(0, rc.Height + 5);
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Rectangle rc = new Rectangle(0, 0, 25, 25);
DrawCheckBox(e.Graphics, ref rc, ButtonState.All);
DrawCheckBox(e.Graphics, ref rc, ButtonState.Checked);
DrawCheckBox(e.Graphics, ref rc, ButtonState.Flat);
DrawCheckBox(e.Graphics, ref rc, ButtonState.Inactive);
DrawCheckBox(e.Graphics, ref rc, ButtonState.Normal);
DrawCheckBox(e.Graphics, ref rc, ButtonState.Pushed);
}
منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604 (http://www.amazon.com/GDI-Custom-Controls-Visual-2005/dp/1904811604)

sinpin
پنج شنبه 01 فروردین 1387, 18:17 عصر
private void DrawBorder3D(Graphics g, ref Rectangle rc,
Border3DStyle borderStyle)
{
ControlPaint.DrawBorder3D(g, rc, borderStyle);
g.DrawString(borderStyle.ToString(), Font, Brushes.Black,
rc.Width + 5, rc.Y + (rc.Height - Font.Height) / 2);
rc.Offset(0, rc.Height + 5);
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
Rectangle rc = new Rectangle(0, 0, 50, 25);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Adjust);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Bump);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Etched);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Flat);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Raised);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.RaisedInner);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.RaisedOuter);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.Sunken);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.SunkenInner);
DrawBorder3D(e.Graphics, ref rc, Border3DStyle.SunkenOuter);
}
منبع : http://www.amazon.com/GDI-Custom-Con.../dp/1904811604 (http://www.amazon.com/GDI-Custom-Controls-Visual-2005/dp/1904811604)

sinpin
پنج شنبه 01 فروردین 1387, 18:51 عصر
عادت کنید که همیشه از using استفاده کنید.
برای مثال :

using (FileStream FS = new FileStream("Test.txt", FileMode.Create))
{
FS.WriteByte((byte)1);
FS.WriteByte((byte)2);
FS.WriteByte((byte)3);
using (StreamWriter SW = new StreamWriter(FS))
{
SW.WriteLine("some text.");
}
}که اگر بخواهید مثال بالا را به بدون استفاده از using پیاده سازی کنید باید چیزی شبیه به تیکه کد زیر بنویسید :

FileStream FS = new FileStream("Test.txt", FileMode.Create);
try
{
FS.WriteByte((byte)1);
FS.WriteByte((byte)2);
FS.WriteByte((byte)3);
StreamWriter SW = new StreamWriter(FS);
try
{
SW.WriteLine("some text.");
}
finally
{
if (SW != null)
{
((IDisposable)SW).Dispose();
}
}
}
finally
{
if (FS != null)
{
((IDisposable)FS).Dispose();
}
}همینطور که میبینید استفاده از using کد شما را راحتتر، خواناتر و کوتاه تر میکند.

منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
پنج شنبه 01 فروردین 1387, 22:12 عصر
using System;
using System.Collections;
using System.Diagnostics;
public sealed class EventLogSearch
{
private EventLogSearch() { }

public static EventLogEntry[] FindTimeGeneratedAtOrBefore(
IEnumerable logEntries, DateTime timeGeneratedQuery)
{
ArrayList entries = new ArrayList();
foreach (EventLogEntry logEntry in logEntries)
{
if (logEntry.TimeGenerated <= timeGeneratedQuery)
{
entries.Add(logEntry);
}
}
EventLogEntry[] entriesArray = new EventLogEntry[entries.Count];
entries.CopyTo(entriesArray);
return (entriesArray);
}

public static EventLogEntry[] FindTimeGeneratedAtOrAfter(
IEnumerable logEntries, DateTime timeGeneratedQuery)
{
ArrayList entries = new ArrayList();
foreach (EventLogEntry logEntry in logEntries)
{
if (logEntry.TimeGenerated >= timeGeneratedQuery)
{
entries.Add(logEntry);
}
}
EventLogEntry[] entriesArray = new EventLogEntry[entries.Count];
entries.CopyTo(entriesArray);
return (entriesArray);
}

public static EventLogEntry[] FindUserName(IEnumerable logEntries,
string userNameQuery)
{
ArrayList entries = new ArrayList();
foreach (EventLogEntry logEntry in logEntries)
{
if (logEntry.UserName == userNameQuery)
{
entries.Add(logEntry);
}
}
EventLogEntry[] entriesArray = new EventLogEntry[entries.Count];
entries.CopyTo(entriesArray);
return (entriesArray);
}
}
منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)

sinpin
پنج شنبه 01 فروردین 1387, 22:20 عصر
public static double CelsiusToFahrenheit(double celsius)
{
return (1.8 * celsius) + 32;
}

public static double FahrenheitToCelsius(double fahrenheit)
{
return 1.8 * (fahrenheit - 32);
}

public static double CelsiusToKelvin(double celsius)
{
return celsius + 273;
}

public static double KelvinToCelsius(double kelvin)
{
return kelvin - 273;
}

public static double FahrenheitToKelvin(double fahrenheit)
{
return CelsiusToKelvin(FahrenheitToCelsius(fahrenheit));
}

public static double KelvinToFahrenheit(double kelvin)
{
return CelsiusToFahrenheit(KelvinToCelsius(kelvin));
}

منبع : "C# 3.0 Cookbook™, Third Edition" (http://www.oreilly.com/catalog/9780596516109/)