تبليغاتX
جادوي سي شارپ
کنترل جعبه انتخاب (Checkbox)
كنترل جعبه انتخاب داراي دو حالت انتخاب شده و انتخاب نشده است. كه اين دو حالت را مي توان از طريق پنجره طراحي و از طريق كدنويسي تغيير داد.
اين كنترل داراي يك خصوصيت به نام Appearance است كه مي توانيد دو مقدار مختلف Appearance.Normal يا Appearance.Button را براي آن انتخاب كنيد. اگر حالت Button را انتخاب كرده باشيد، كنترل شما به شكل دكمه هاي فشاري (toggle button) ديده خواهد شد و اگر حالت Normal انتخاب شده باشد، كنترل به شكل جعبه انتخابي ديده خواهد شد.

کنترل دكمه (Button)
كنترل دكمه براي گرفتن دستورات كاربر و ارسال به برنامه استفاده مي شود. وقتي كه روي يك دكمه كليك مي كنيد برنامه رويداد كليك كنترل را بدست آورده و دستورات نوشته شده را اجرا مي كند. براي دسترسي به دستگيره رويداد اين كنترل كافيست همانند كنترل جعبه متن روي كنترل دوبار كليك كنيد.

کنترل دكمه راديويي يا دكمه انتخاب (Radio/Option Button)
دكمه راديويي يك دكمه دايره اي با قابليت كليك است. در يك گروه از دكمه هاي راديويي فقط يكي مي تواند انتخاب شود و در صورتي كه گروه هاي بيشتر از يكي در يك فرم موجود باشد بايد از كنترل Group Box براي گروه بندي آنها استفاده كرد.
همانند جعبه انتخاب شما مي توانيد براي دكمه هاي راديويي براي رويداد كليك آنها برنامه نويسي انجام دهيد ولي معمولا اين كار انجام نميشه و برنامه نويسي اين كنترلها در رويداد كنترل ديگري مثل دكمه انجام مي شود.

کنترل جعبه ليست و ليست فروريز (Listbox and Combo Box)
هر دو كنترل جعبه ليست و ليست فروريز حاوي عناصر يك آرايه در ليست هستند. ليست فروريز به برنامه نويس اين قابليت را مي دهد كه ليست خود را در فضاي كوچكي قرار دهد. كاربر مي تواند در جعبه ليست موارد مختلفي را انتخاب كند در حالي كه در ليست فروريز كاربر فقط مجاز به انتخاب يك گزينه است. چند مورد از خصوصيات اين دو كنترل در ليست زير ديده مي شود:

خصوصیت توضیحات
Items مجموعه آيتمهاي كه در ليست قرار دارند.
MultiColumn اگر true باشد با استفاده از خصوصيت ColumnWidth مي توان پهناي هر ستون را تعيين كرد.
SelectionMode با تعيين multisimple قادر به انتخاب موارد مختلفي با استفاده از كي بورد خواهيد بود و با تعيين multiextended مي توانيد با موس گروه هاي مختلفي را انتخاب كنيد.
SelectedIndex شماره انديس آيتم انتخاب شده.
SelectedIndices مجموعه آيتمهاي انتخاب شده در ليست را برمي گرداند.
SelectedItem آيتم انتخاب شده را برمي گرداند.

مجموعه items
براي اضافه و حذف نمودن آيتمهاي يك ليست يا ليست فروريز از مجموعه items استفاده مي شود. اين مجموعه يك ليست آرايه ArrayList است كه متدهاي اصلي آن را مي توانيد در جدول زير ببينيد:
متد توضیحات
Add اضافه نمودن آيتم به ليست.
Count تعداد اعضاي ليست
Iten[i] دسترسي به عضوهاي مجموعه
RemoveAt(i) حذف عضو iام

اگر در ليست چند آيتم انتخاب شده باشد، مي توان با استفاده از روشهاي زير به مجموعه آيتمهاي انتخاب شده دسترسي پيدا كرد:
lsCommands نام كنترل ليست است.

ListBox.SelectedIndexCollection it = new ListBox.SelectedIndexCollection (lsCommands);
ListBox.SelectedObjectCollection so = new ListBox.SelectedObjectCollection (lsCommands);

کنترل منو (Menu)
شما مي تونيد دو نوع منوي مختلف رو به فرمها اضافه كنيد:
1- MenuStrip كه در بالاي فرمها قرار مي گيرد.
2- ContextMenuStrip معمولا از اين منو براي كليكهاي راست استفاده مي شود.
با دوبار كليك روي گزينه هاي منو مي تونيد رويداد كليك اون رو فعال كنيد.

کنترل (Tooltip)
كنترل Tooltip يك جعبه رنگي است كه در زمان قرارگيري اشاره گر موس روي يك كنترل نمايش داده مي شود. براي استفاده از اين كنترل نيز بايد يك نمونه از آنرا روي فرم قرار دهيد و سپس كنترلهاي مورد نظر رو به اون اضافه كنيد. مانند مثال زير:

tips.SetToolTip (btPush, "Press to add text to list box");
tips.SetToolTip (lsCommands, "Click to copy to text box");

مابقي كنترلها رو هم در مقاله هاي بعدي مورد بحث قرار خواهيم داد.
+ نوشته شده در  سه شنبه بیست و دوم خرداد 1386ساعت 9:20  توسط کنستانتین  | 
کنترلهای ویندوزی
بسیاری از کنترلهای ویندوزی در زمان استفاده مشابه کنترلهای دکمه و جعبه متن هستند. اگر به تصویر زیر نگاه کنید کنترلهایی که عموما در بسیاری از برنامه ها مورد استفاده قرار می گیرند رو خواهید دید.
C# controls

همه کنترلهای استفاده شده در تصویر برنامه فوق دارای خصوصیات: Name, Text, Font, ForeColor هستند. شما می توانیداین خصوصیات را از طریق پنجره خصوصیات یا از طریق برنامه نویسی تغییر دهید.
کلاس فرم که توسط محیط طراحی ویژوال استدیو ساخته شده است دارای یک سازنده به نام Form1 است که در آن متد InitializeComponent صدا زده شده است. این متد خصوصیات کنترلها را تعیین می کند و شما نیز می توانید از طریق کد خصوصیات کنترلها را تغییر دهید. البته پیشنهاد می شود که مثل من برای تغییر خصوصات کنترلها در ابتدای برنامه از یک متد جدید به نام Init استفاده شود. و این متد پس از متد InitializeComponent صدا زده شود.
برای مثال برای قرار دهی مقادیر اولیه در کنترل کمبو باکس (لیست فروریز) از همین روش استفاده شده و مقادیر در متد init تعریف شده و به لیست کمبو باکس اضافه می شوند.

namespace ControlTest
{
public partial class Form1 : Form
{public Form1()
{ InitializeComponent();
init();
}
private void init()
{
cboFontSize.Items.Add("8");
cboFontSize.Items.Add("10");
cboFontSize.Items.Add("12");
cboFontSize.Items.Add("14");
cboFontSize.Items.Add("18");
}
}
}




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

خصوصیت توضیحات
Name نام کنترل که فقط در زمان طراحی قابل تغییر است
BackColor رنگ زمینه برچسب
BorderStyle بدون رسم مرز کنترل، FixedSingle و Fixed3D
Enabled true یا false. اگر false انتخاب شده باشد، کنترل حاکستری می شود.
Font تعیین یک فونت جدید
ForeColor رنگ متن
Image یک تصویر که در محدوده کنترل نمایش داده می شود.
ImageAlign تعیین مکان قرارگیری تصویر
Text متن برچسب
Visible true یا false. وضعیت رویت کنترل روی فرم


کنترل جعبه متن (TextBox)
جعبه متن یک کنترل با قابلیت تایپ متن است که به شکل تک خطی و چند خطی می تواند روی فرم تنظیم شود. شما می تونید متن این کنترل رو بگیرید یا متنی رو در کنترل قرار دهید. خصوصیات مهم این کنترل علاوه بر خصوصیات لیست شده برای برچسب عبارتند از:

خصوصیت توضیحات
Lines آرایه ای از جنس string که به ازای هر خط یک عنصر دارد
Locked اگر true انتخاب شده باشد، کاربر امکان تایپ داخل جعبه متن را ندارد
Multiline true یا false. تعیین کننده قابلیت تایپ چند خطی در کنترل
ReadOnly مشابه خصوصیت Locked. کاربر می تواند متن رو انتخاب نمایید اما امکان تغییر ندارد
WordWrap true یا false. حالت شکسته شدن خط یا ادامه متن خط

برنامه نمونه: یک جعبه متن و یک کنترل دکمه روی فرم قرار دهید. سپس از کد زیر برای تغییر متن در زمان اجرا استفاده کنید.

private void btnSetText_Click(object sender, EventArgs e)
{ txtSample.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
txtSample.Text = "سلام به دنیای جادوی سی شارپ";
}

خصوصیت TextAlign موقعیت قرارگیری متن رو در جعبه متن مشخص می کنه و همانطور که می بینید متن به سمت راست تراز شده است.

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

راستش حتما در خصوص این کلمه لیست فروریز یه خورده تعجب کردید! من خودم این کلمه بیشتر از هر کلمه فارسی دیگری می پسندم. بیشتر نشون می ده که این کنترل چی هست و چی کار می کنه.
+ نوشته شده در  شنبه هشتم اردیبهشت 1386ساعت 10:23  توسط کنستانتین  | 
به خاطر سوالی که یکی از خوانندگان وبلاگ پرسیدن موقتا سلسله مقالات مربوط به ADO.NET را قطع می کنیم و این مطلبو می نویسیم. اول این توضیحو بدم که تا اونجایی که می تونید سعی کنید از توابع API در .NET استفاده نکنید چون کد شما تبدیل به Unmanaged میشه.
یه پروژه از نوع Console Application باز کنید و در قسمت بالای اون (در قسمتی که Using ها نوشته شدن) عبارت زیرو بنویسید:

using System.Runtime.InteropServices;

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

[DllImport("User32.dll")]
public static extern int MessageBox(int h, string m, string c, int type);
static int Main(string[] args)
{
string myString="This is a Test";
return MessageBox(0, myString, "My Message Box", 0);
}

DllImport یه Attribute است که برای استفاده از توابع External باید از اون استفاده کنیم. با استفاده از این Attribute مشخص می کنیم که از چه Dll ی می خواهیم استفاده کنیم و یا به عبارت دیگه تابعی که می خواهیم فراخوانی کنیم (تابعی که DllImport در بالای آن نوشته شده است) متعلق به کدوم Dll است.
حالا کافیه که تابع مورد نظرتونو فراخوانی کنید که دیگه خودتون تو این زمینه اوستایید.
ضمنا در مورد نحوه کانکت شدن به SQL Server می تونید به پست زیر مراجعه کنید: http://csharpblog.blogfa.com/post-12.aspx
+ نوشته شده در  جمعه بیست و پنجم اسفند 1385ساعت 1:20  توسط ققنوس  | 
یک برنامه ساده تحت ویندوز توسط سی شارپ
توسط سی شارپ به سادگی می تونید رابطهای کاربر ویندوزی را طراحی کنید. این عمل با استفاده از طراح سی شارپ به سادگی صورت می گیرد. برای این منظور یک پروژه سی شارپ را آغاز کنید. این مسیر را برای ساخت یک برنامه ویندوزی طی کنید: File\New Project\> C# Windows Application نام پیش فرض پروژه و فایل آن WindowsApplication1 است. شما می تونید این نام رو تغییر بدید و بعد از اون فرم پیش فرض Form1.cs در اختیار شماست که می تونید از جعبه ابزار کنترلهای مورد نظر خودتون روی اون قرار بدید. خوب حالا برای نوشتن کد کافیه که روی کنترل مورد نظر دوبار کلیک کنید. در این مثال ما می خواهیم که یک کار بسیار ساده انجام بدیم. برای این منظور هم فقط از یک دکمه و یک جعبه متن استفاده می کنیم و می خواهیم با انتخاب دکمه، متن "به دنیای جادوی سی شارپ خوش آمدید" را در جعبه متن قرار بدیم. پس از دوبار کلیک روی دکمه کد زیر بصورت اتوماتیک ایجاد می شود و ما دستورات مورد نیاز برای اعمال تغییرات عنوان شده را می نویسیم.

private void btnHi_Click(object sender, EventArgs e)
{
    txtMessage.Text = "Hello to the magic world of CSharp";
}

برنامه شما آماده اجرا شدن است. پس با استفاده از کلید F5 برنامه رو اجرا کنید و نتیجه عمل رو ببینید.

توضیاتی در خصوص مابقی دستورات:

دستورات بارگذاری توابع کتابخانه ای کلاسهایی که در این برنامه از آنها استفاده شده است: (اين كدها په شكل پيش فرض در ابتداي برنامه قرار مي گيرند و در زمان استفاده از اشيا و كلاسهاي زير گروه آنها نيازي به مشخص نمودن مسير كامل نيست)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;

کدهایی هم در خصوص ایجاد کنترلها، اضافه شدن به فرم و رویدادهای آن دیده می شود:

private void InitializeComponent()
{
this.btnHi = new System.Windows.Forms.Button();
this.txtMessage = new System.Windows.Forms.TextBox();
// btnHi
this.btnHi.Location = new System.Drawing.Point(63, 75);
this.btnHi.Name = "btnHi";
this.btnHi.Size = new System.Drawing.Size(145, 23);
this.btnHi.TabIndex = 0;
this.btnHi.Text = "Hello";
this.btnHi.UseVisualStyleBackColor = true;
this.btnHi.Click += new System.EventHandler(this.btnHi_Click);
// txtMessage
this.txtMessage.Location = new System.Drawing.Point(63, 49);
this.txtMessage.Name = "txtMessage";
this.txtMessage.Size = new System.Drawing.Size(145, 20);
this.txtMessage.TabIndex = 1;
.
.
.
}

اگر این کدها رو بصورت دستی خودتون تغییر بدید می تونید تاثیر اون رو در محیط طراحی برنامه ببینید. فقط مواظب تغییرات باشید. (اون خطي هم كه توپر شده اضافه كردن رويداد به يك شي هست)!
+ نوشته شده در  یکشنبه بیستم اسفند 1385ساعت 9:21  توسط کنستانتین  | 
مقدمه
خوب، فکر می کنم برای شروع به استفاده از ابزار برنامه نویسی سی شارپ مقدماتی کافی باشه. منظورم نوشته های پیشین من در خصوص سی شارپ هست. قصد دارم در این پست شروع کنیم به استفاده از ابزار برنامه نویسی. فقط چند تا نکته کوچولو در خصوص مفاهیم باقی مونده که سعی می کنم در کنار مطالب جدید اونها رو هم بنویسم تا چیزی از قلم نمونه.
سی شارپ #C زبانی است که بر اساس زبانهای ++C سی پلاس پلاس، VB ویژوال بیسیک و Java جاوا پیاده سازی شده است. هر دوی زبانهای #C و VB.NET از توابع کتابخانه ای یکسان بهره می برند و همچنین کد را به یک لایه یکسان کامپایل می کنند. هر دو دارای کدهای مدیریت شده (Managed Code) مثل Garbage Collector هستند. هر دو از کلاسهایی با متدهایی استفاده می کنند که اسامی آنها شبیه به موارد مشابه جاوا هست. بنابراین اگر شما با جاوا کار می کنید مشکل زیادی در سی شارپ نخواهید داشت.

اشیا در سی شارپ
در سی شارپ همه چیز شی است. شی می تواند، داده ها را نگهداری کند، دارای متد باشد که روی آن تاثیر گذار باشد. برای مثال رشته ها (string) الان یک شی است که دارای متدهای مثل این موارد است: Substring, ToLowerCase, ToUpperCase, IndexOf ,Insert
متغیرهای integer, float و Double نیز شی هستند. که هر کدام دارای متدهایی نیز هستند.

string s;
float x;
x = 12.3;
s = x.ToString();


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

ایجاد یک برنامه سی شارپ
خوب برای اینکه در یک دریا غرق نشیم من پیشنهاد می دم از یک برنامه بسیار ساده شروع کنیم. برای همین می ریم سراغ یک برنامه کنسول. برنامه های کنسول در پنجره Command Propmt اجرا می شوند و هیچ فرم خاصی ندارند. ویژوال استدیو رو اجرا کنید و سپس از منوی File گزینه New Propject را انتخاب کنید. در پنجره انتخاب، گزینه C# Console Application رو انتخاب کنید که در تصویر زیر هم می تونید مشابه اون رو ببینید:

Csharp: New Project Window
بعد از انتخاب نوع برنامه، یک ماژول که دارای تعدادی فیلد هست در اختیار شما قرار می گیرد. شما می تونید کدهای مورد نیاز خود رو بنویسید. برای مثال کد زیر را می نویسیم.

Console.WriteLine("Hello C# World");

خوبه شما اولین برنامه سی شارپ رو با موفقیت نوشتید. می تونید اون رو اجرا کنید و نتیجه رو ببینید.
البته بعد از اجرا شدن برنامه پنجره Command Prompt رو دیدید که سریع هم بسته شد. نگران نباشید. اگر شما قبلا با ++C کار کرده باشید می دونید که این پنجره به عنوان پنجره خروجی برنامه عمل می کنه و خوب بعد از اجرای کامل برنامه هم بسته می شه. برای اینکه شما بتونید پنجره خروجی رو باز نگه دارید تا خروجی های برنامه رو ببینید نیاز هست که یک متد برای خواندن اطلاعات از صفحه کلید را صدا بزنید. کد زیر این عمل را انجام می دیه. بنابراین برنامه شما به دو خط تبدیل شد. اولی برای نمایش خروجی و دومی هم برای گرفتن اطلاعات از ورودی.

Console.ReadLine();

+ نوشته شده در  دوشنبه بیست و سوم بهمن 1385ساعت 19:47  توسط کنستانتین  |