- شنبه ۲۳ مرداد ۹۵
- ۱۶:۰۸
هر کسی که مدتی برنامه نویسی کرده باشه حتماً ترفند هایی رو برای خودش پیدا کرده تا بتونه کدهای جمع و جورتر و خلاصه تری با کارایی بالاتر را تولید کنه و یا با استفاده از امکانات محیط برنامه نویسی به منظور سهولت کد نویسی و یا تولید کد های خودکار به کار خودش سرعت و دقت بیشتری بده.ممنون میشم تجربیات خودتون رو ارائه کنید.
حتما تا حالا با توابع Event ها که شبیه هم هستند و الکی صفحه رو شلوغ می کنن بر خورد کردین ، میشه بعضیاشونو اینجوری خلاصه کرد:
فرض کنیم توابعی برای هندل کردن رویدادهایی داریم که تقریبا مشابه اند مثل زیر
1
2
3
4
5
6
7
8
9
10
11
|
private void button1_Click(object sender, EventArgs e) {
Form1 form = new Form1();
form.Show();
}
private void button2_Click(object sender, EventArgs e)
{
Form1 form = new Form1();
form.Show();
}
|
جای این دو می توان تابعی برای یکی ایجاد کرد و تابع رویداد دیگری را به آن لینک داد و به این شکل نوشت
1
2
3
4
5
6
7
8
9
10
11
12
|
private void button1_Click(object sender, EventArgs e) {
switch (((Button)sender).Name)
{
case "button1":
new Form1().Show();
break;
case "button2":
new Form2().Show();
break;
}
}
|
ارزش این روش وقتی مشخص می شود که تعداد کنترل ها در فرم زیاد باشند.
ممکنه توی فرمتون تعداد زیادی TextBox باشه و بخوایید هر بار که اون فوکوس میشه متن داخلش انتخاب بشه تا اگه کاربر بخواد اون رو عوض کنه نیازی به Del و BackSpace نداشته باشه
میشه برای هر TextBox یه Event نوشت و اون کار رو انجام بدید
حالا اگه تعداد textBox ها زیاد باشه برای هر کنترل یک Event
میشه برای همه اونهایک Event نوشت تا اینکار رو برای همه اونها انجام بده :
اول باید همه TextBox هایی رو که می خوایید انتخاب کنین بعد یه Event براشون بزارین تا همشون از یه Event استفاده کنند بعد این کد رو داخل اون Event می گذارید
1
2
3
4
5
6
|
private void textBox1_Enter(object sender, EventArgs e) {
TextBox txtbx = (TextBox)sender;
txtbx.text.selectall();
}
|
اگه بخواهیید قسمتی از کدتون رو برای مدتی از کد اصلی خارج کنید چه کار می کنید؟
از // استفاده میکنید؟ یا از /* */ ؟ اگه تعداد خطوط مورد نظر زیاد باشن چی کار می کنید؟ برای هر خط // می گذارید؟
خوب اجازه بدید این جور کارای پیش پا افتاده رو .NET براتون انجام بده:
کافیه خطوط مورد نظر را انتخاب کنید و بعد Ctrl رو نگه دارید و E و C رو همزمان بفشارید!
برای برگشتش هم Ctrl + (E,U)
اگر کار با کیبرد براتون سخته این کارایی که می گم رو انجام بدید:
View > ToolBars > Text Editor
که باعث میشه یه ToolBarبه بالای صفحه اضافه بشه که این امکانی که گفتم از اینجایی که در فایل زمیمه مشخص کردم قابل دسترسی می باشد.
در مورد بقیه امکانات این قسمت هم اگه یه مقدار باهش کار کنید متوجه می شید خودتون ولی اگه خواستید توضیح می دم بازم.
برای نامگذاری متغیرها (object ها) بهتر است نام انتخابی بهمراه نوع داده نوشته شود، مثلا:
1
2
3
4
5
|
DateTime rapid<b>DateTime</b>; TextBox userName<b>TextBox</b>; Label userName<b>Label</b>; ComboBox userName<b>ComboBox</b>; |
همچنین اگر دقت کنید وقتی که از wizard برای افزودن گزینه های Menu روی فرم استفاده میکنید، VS به همین طریق گزینه های Menu را نامگذاری میکند مثلا با نام fileToolStripMenu و بهرحال باعث خوانایی کدها می گردد.
ممکنه در زمانی که کد می نویسید تورفتگی های پیشفرضی که محیط ادیتور ایجاد می کنه بهم بریزه و مک یا زیاد بشه
حالا اگه بخواییم با Space و Del درستشون کنیم که
میشه اینکارو به ادیتور سپرد
1- اول کل کد را انتخاب می کنیم Ctrl+A
2- بعد Ctrl+K
3- در آخر Ctrl+F
اگه دوست دارید یه نفر for , foreach , try , while , … را براتون بنویسه تا شما داخلش بتونید کد بزنید و یا کد انتخابی شمارو داخل آن بذاره باشید .NET بهترین انتخاب خواهد بود!
کد مورد نظر خود را انتخاب کنید و Sururond With … رو بزنید! حالا دیگه انتخاب با شماست!
اینم کد برای اینکه textbox های روی فرم از حالت readonly خارج شوند بیشتر بدرد edit می خوره
1
2
3
4
5
6
7
8
9
|
<font size="2"><font color="#0000ff">private</font></font><font size="2"><font color="#0000ff">void</font></font><font size="2"> button1_Click(</font><font size="2"><font color="#0000ff">object</font></font><font size="2"> sender, </font><font size="2"><font color="#008080">EventArgs</font></font><font size="2"> e)</font> <font size="2">{</font> <font size="2"><font color="#0000ff">foreach</font></font><font size="2"> (</font><font size="2"><font color="#008080">Control</font></font><font size="2"> co </font><font size="2"><font color="#0000ff">in</font></font><font size="2"> Controls)</font> <font size="2">{</font> <font size="2"><font color="#0000ff">if</font></font><font size="2"> (co.GetType().ToString() == </font><font size="2"><font color="#800000">"System.Windows.Forms.TextBox"</font></font><font size="2">)</font> <font size="2">((</font><font size="2"><font color="#008080">TextBox</font></font><font size="2">)co).ReadOnly = </font><font size="2"><font color="#0000ff">false</font></font><font size="2">;</font> <font size="2">}</font> <font size="2">}</font> |
البته برای اینکه enable یا visible کنید هم میتونید استفاده کنید