PDA

View Full Version : حرفه ای: آیا میتوان برای یوزرکنترل ها خصوصیت تعریف کرد؟



sagggad
پنج شنبه 19 دی 1392, 13:49 عصر
سلام دوستان...
من در برنامم از یوزر کنترل استفاده کردم حالا خواستم ببینم میتونم براش Property تعریف کنم؟:لبخندساده:

Mofid.m
پنج شنبه 19 دی 1392, 15:00 عصر
بله میشه
میتونی خاصیت براش تعریف کنی
متلا من برای ثبت تاریخ واسه خودم یه UserControl ساختم که به شکلی که می خوام کار کنه
بعد یه سری خاصیت واسش تعریف کردم
به عنوان نمونه
public string Date
{
get
{
if (txtDay.Text != string.Empty && txtMonth.Text != string.Empty && txtYear.Text != string.Empty)
return txtYear.Text + "/" + txtMonth.Text + "/" + txtDay.Text;
else
return string.Empty;
}
}

public int Day
{
set
{
txtDay.Text = value.ToString();
}
}

public int Month
{
set
{
txtMonth.Text = value.ToString();
}
}

public int Year
{
set
{
txtYear.Text = value.ToString();
}
}

public Color TextBoxsBackColor
{
get
{
return txtYear.BackColor;
}

set
{
txtDay.BackColor = value;
txtMonth.BackColor = value;
txtYear.BackColor = value;
}
}

public Color TextBoxsForeColor
{
get
{
return txtYear.ForeColor;
}

set
{
txtDay.ForeColor = value;
txtMonth.ForeColor = value;
txtYear.ForeColor = value;
}
}

public BorderStyle TextBoxsBorderStyle
{
get
{
return txtYear.BorderStyle;
}

set
{
txtDay.BorderStyle = value;
txtMonth.BorderStyle = value;
txtYear.BorderStyle = value;
}
}

Mofid.m
پنج شنبه 19 دی 1392, 15:03 عصر
خاصیت هایی که فقط از بلاک Set استفاده می کنن فقط قابل تنظیم کردن (فقط نوشتنی)
خاصیت هایی که از بلاک Get استفاده می کنن فقط خواندنی
و خاصیت هایی که از هر دو استفاده می کنن خواندنی، نوشتنی هستن

sagggad
پنج شنبه 19 دی 1392, 15:16 عصر
از راهنماییت خیلی ممنونم
میشه یه توضیح یا آموزشی تو همین تایپیک برای کدهات بذاری(یا توی یک تایپیک دیگه)؟؟
خیلی ممنون میشم

Mofid.m
پنج شنبه 19 دی 1392, 15:33 عصر
من سه تا تکست باکس دارم تو یوزر کنترل به نام های
txtYear,txtmonth,txtDay
عکس دیزاین یوزر کنترل رو هم ضمیمه کردم
بعد اومدم براش یه سری خصوصیت تعریف کردم

public string Date
{
get
{
if (txtDay.Text != string.Empty && txtMonth.Text != string.Empty && txtYear.Text != string.Empty)
return txtYear.Text + "/" + txtMonth.Text + "/" + txtDay.Text;
else
return string.Empty;
}
}

توی این خاصیت که یه خاصیت فقط خواندنی هست من خاصیت Date رو برای یوزر کنترل تعریف کردم که تو قسمت properties نمایش داده میشه ولی نمیشه این خاصیت رو تنظیم کرد یعنی فقط خواندنی هستش
این خاصیت زمانی که تمام تکست باکس ها پر بشه تاریخ رو نمایش میده در غیر این صورت خالی می مونه

sagggad
پنج شنبه 19 دی 1392, 15:34 عصر
واقعا ازت ممنونم...
من خیلی وقت بود دنبال این موضوع بودم

sagggad
پنج شنبه 19 دی 1392, 15:38 عصر
یه سوال Return چه کار میکنه؟

Mofid.m
پنج شنبه 19 دی 1392, 15:43 عصر
خاصیت های بعدی خاصیت های Year,Month,Day هستن
این خاصیت ها عملکردشون مثل همه
public int Day
{
set
{
txtDay.Text = value.ToString();
}
}

public int Month
{
set
{
txtMonth.Text = value.ToString();
}
}

public int Year
{
set
{
txtYear.Text = value.ToString();
}
}
این خاصیت فقط نوشتنی هستن یعنی تو قسمت Properties نمایش داده نمیشه ولی میشه تو قیمت کد اونها رو مقدار دهی کرد
مثلا:
PersianDateTextBox.Year
PersianDateTextBox.Month
PersianDateTextBox.Day

اگه خاصیت Year رو مقدار دهی کنی، Text تکست باکس txtYear به مقدار که دادی تغییر میکنه و بقیه هم همینطور

sagggad
پنج شنبه 19 دی 1392, 15:46 عصر
ممنون
یه سوال:
مثلا من یه یوزر کنترل طراحی کردم حالا میخوام یه خصوصیت برای خود یوزر کنترل بذارم که کاربر بتونه رنگ زمینه ی اون رو تعیین کنه...
خودش همچین خصوصیتی داره اما من به عنوان مثال میگم
متشکر

Mofid.m
پنج شنبه 19 دی 1392, 15:50 عصر
یه سوال Return چه کار میکنه؟

مقداری رو که باید خاصیت برگردونه یا نمایش بده رو مشخص می کنه

Mofid.m
پنج شنبه 19 دی 1392, 16:06 عصر
خاصیت آخر هم TextBoxsBackColor هستش
این خاصیت میاد BackColor همه تکست باکس ها رو یکجا تغییر میده
public Color TextBoxsBackColor
{
get
{
return txtYear.BackColor;
}

set
{
txtDay.BackColor = value;
txtMonth.BackColor = value;
txtYear.BackColor = value;
}
}
این خاصیت تو قسمت Properties نمایش داده میشه و طبق دستور :
get
{
return txtYear.BackColor;
}
میاد backcolor تکست باکس txtYear رو نشون میده.
و وقتی تنظیمش میکنیم backcolor همه تکست باکس ها رو به رنگ مورد نظر تغییر میده، طبق دستور زیر:
set
{
txtDay.BackColor = value;
txtMonth.BackColor = value;
txtYear.BackColor = value;
}

sagggad
پنج شنبه 19 دی 1392, 16:12 عصر
من وقتی کامپوننت رو به فرم اضافه میکنم این به خصوصیاتش اضافه نمیشه چرا؟

Mofid.m
پنج شنبه 19 دی 1392, 16:13 عصر
مثلا من یه یوزر کنترل طراحی کردم حالا میخوام یه خصوصیت برای خود یوزر کنترل بذارم که کاربر بتونه رنگ زمینه ی اون رو تعیین کنه...
خودش همچین خصوصیتی داره اما من به عنوان مثال میگم
متشکر

این موضوع رو هم مثل همین خصوصیت TextBoxsBackColor میتونی بنویسی

Mousavmousab
پنج شنبه 19 دی 1392, 20:05 عصر
ساخت کامپوننت خودش یک مهارت است