کنترل TextBox

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

خاصیت توضیح
AcceptsReturn تعیین می‌کند که در TextBox متن به صورت چند خطی نوشته شود یا نه. که در این صورت با زدن دکمه اینتر در داخل TextBox خط جدید ایجاد می‌شود.
AcceptsTab در حالت چند خطی این خاصیت باعث می‌شود که مکان نما با زدن دکمه tab به جای اینکه به کنترل بعدی برود به tab بعد برود.
Enabled اگر این خاصیت در حالت false قرار بگیرد TextBox به صورت read-only در می‌آید و در نتیجه در حکم یک برچسب می‌شود.
Font نوع فونتی که در جعبه متن مورد استفاده قرار می‌گیرد.
Lines خطوط متن در یک textbox چند خطی
Multiline اگر True باشد به شما اجازه تایپ چندین خط در TextBox را می‌دهد.
Text متن داخل جعبه متن را نشان می‌دهد.
PasswordChar کاراکترهایی را که توسط کاربر وارد می‌شوند پنهان می‌کند.
ReadOnly تعیین می‌کند که آیا متن قابل ویرایش باشد یا نه.
Visible قابل رویت بودن یا نبودن textbox را تعیین می‌کند
WordWrap در تکس باکس چند خطی کاربرد دارد. باعث می‌شود وقتی که نشانگر ماوس به انتهای تکس باکس رسید به صورت اتوماتیک به خط بعد منتقل شود.

در مثال زیر نحوه استفاده از TextBox نشان داده شده است. یک پروژه ویندوزی ایجاد کنید. برنامه از شما می‌خواهد که دو عدد را وارد کنید و با زدن دکمه جمع آنها را با استفاده از یک برچسب (label) به شما نشان می‌دهد. دو textbox را روی فرم بکشید و نام اولی را textBoxFirstNumber و دومی را textBoxSecondNumber بگذارید. سپس در کنار هر textbox یک کنترل label که نشان دهنده هدف آنهاست (textbox ها) قرار دهید. یک کنترل lable دیگر برای نشان دادن حاصل جمع دو عدد در فرم قرار داده و نام آن را labelSum بگذارید. یک دکمه Button را هم اضافه کرده و نام آن را buttonAdd بگذارید. مکان قرار گیری و سایز کنترل‌ها را مانند شکل زیر تنظیم کنید:
textbox-control-1-9-11-01
بر روی دکمه add دو بار کلیک کرده و در رویداد کلیک مربوط به آن کد زیر را وارد نمایید :

private void buttonAdd_Click(object sender, EventArgs e)
{
    int num1 = Int32.Parse(textBoxFirstNumber.Text);
    int num2 = Int32.Parse(textBoxSecondNumber.Text);
    int sum = num1 + num2;

    labelSum.Text = "Sum = " + sum;
}

کدهای نوشته شده در داخل textBoxFirstNumber و textBoxSecondNumber با استفاده از متد ()Parse کلاس Int32 به نوع صحیح تبدیل شده و در متغیرهای مربوطه ذخیره می‌شوند. ما به این تبدیل نیاز داشتیم چون خاصیت Text از نوع رشته است. سپس جمع آنها محاسبه می‌شود. و در نهایت مقدار جمع به خاصیت Text برچسب labelSum نسبت داده می‌شود. یکی از مفیدترین رویدادهای تکست باکس، رویداد TextChanged است. این رویداد زمانی رخ می‌دهد که متن داخل تکست باکس دستکاری شود (تغییر کند). برنامه‌ی زیر یک مثال از کاربرد این رویداد نشان می‌دهد. یک برنامه ویندوزی دیگر را ایجاد و یک تکست باکس (Text Box) و یک برچسب (Label) به آن اضافه کنید. می‌توانید نام آنها را تغییر ندهید.
textbox-control-1-9-11-02
متن برچسب را که در داخل خاصیت Text آن قرارگرفته است را پاک کنید.

برای انتخاب کردن آن می‌توانید از نوار کرکره‌ای بالای پنجره‌ی خواص (Properties) استفاده کنید. رویداد پیش فرض کنترل تکست باکس (Text Box) رویداد TextChanged است. پس با دوبار کلیک کردن بر روی تکست باکس یک کنترل کننده رویداد ( Event Handler) برای رویداد گفته شده ایجاد می‌کند. کد زیر را به Event Handler اضافه کنید.

private void textBox1_TextChanged(object sender, EventArgs e)
{
    label1.Text = textBox1.Text;
}

حالا برنامه را اجرا کرده و هر چیزی را که می‌خواهید درون تکست باکس بنویسید. مشاهده می‌کنید که هر چیزی که شما درون تکست باکس می‌نویسید دقیقاً به همان صورت بر روی بر چسب نوشته می‌شود.
textbox-control-1-9-11-03
زمانی که متن تکست باکس دستکاری می‌شود، Event Handler اجرا شده و هر متنی را که درون تکست باکس قرار دارد را دقیقاً به همان صورت درون برچسب (label1) قرار می‌دهد. به طور پیش فرض، هر تکست باکس فقط می‌تواند یک خط را درون خود جای دهد. برای اینکه چند خط درون تکست باکس قرار بگیرد، می‌توانید مقدار خاصیت Multiline آنرا برابر با True قرار دهید. وقتی که شما اینکار را انجام می‌دهید، باید توجه داشته باشید که شما نمی‌توانید طول تکست باکس را در قسمت طراحی تغییر دهید.
textbox-control-1-9-11-05
شما می‌توانید مقدار خاصیت WordWrap را برابر با True قرار دهید تا نشانگر ماوس زمانی که به انتهای قسمت راست تکست باکس رسید به طور اتوماتیک به خط بعد برود. اگر مقدار آن برابر با False باشد، متن در همان خط ادامه پیدا می‌کند. شما می‌توانید مقدار خاصیت ScrollBar را به Horizontal (افقی)، Vertical (عمودی) و یا هر دو تغییر دهید. این کار باعث می‌شود که قسمت پیمایش به تکست باکس چند خطی اضافه شود.
اگر تکست باکس شما می‌خواهد یک پسورد را بپذیرد، شما باید مقدار خاصیت PasswordChar را به چیزی مانند * تغییر دهید (این کاراکتر بسته به سلیقه‌ی شما می‌تواند هر چیزی باشد). وقتی که کاربر یک حرف را وارد کند این کاراکتر (*) به او نمایش داده می‌شود. به شکل زیر دقت کنید.
textbox-control-1-9-11-04