PDA

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



REZAE2011
شنبه 05 آذر 1390, 17:58 عصر
سلام
ایا می شه یک متد یا خاصیت جدید به کنترلی بیفزاییم.

مثلا می شه یک(usercontrol) یاکلاس جدیدی درست کنیم که از کلاس button ارث ببرد بعد در این کلاس جدید یک خاصیت جدید ایجاد کنیم مثلا خاصیتی باشه که تعداد کلیک کردن را در خودش نگه داره

haniyehghassami
شنبه 05 آذر 1390, 20:27 عصر
سلام
اره خب چرا که نه؟؟؟

این و ببین

1 - ساخت user control


public class MyButton : System.Windows.Forms.Button
{
private int clickcount;
public int ClickCount
{
get
{
return clickcount;
}
}
protected override void OnClick(EventArgs e)
{
++clickcount;
base.OnClick(e);
}
}


نکات مهم تو این حالت :
1 - مورد inherit هستش که یعنی ارث برای پس user control ما حتما باید ارث بری داشته باشه از دکمه
2 - برای تعریف کردن خصوصیات کلا همون طور که میدونیم به شکل زیر عمل میشه :


private int cl;
public int Cl
{
set { Statement; } //در اینجا میشه مقداری رابصورت پیش فرض برای خصوصیتم ست کنم

get { return cl; }//تنظیم اینکه نوع خروجی ما توی این خصوصیت چی باشه
}

3 - در اینجا قبل از تعریف کامل متد کلیک override گذاشتیم که به این معنی هستش که این متد ما روی متد اصلی نوشته میشه
4 - کلمه یا همون جمله ی base.OnClick(e); هستش که در اینجا براساس همون بیس متد کلیک این متد ساخته شده

شرمنده قبلی اشتباه بود با کمک دوستم درست شد حالا:خجالت:

mmd2009
شنبه 05 آذر 1390, 20:59 عصر
با سلام.

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

به این صورت عمل کنید و کنترل جدید رو بسازید :


using System.Windows.Forms;

namespace WindowsFormsApplication6
{
public partial class NewButton : Button
{
public NewButton()
{
InitializeComponent();
}
public int CountClick { get; set; }
}
}




طریقه استفادش هم به این صورت هستش که :


using System;
using System.Windows.Forms;

namespace WindowsFormsApplication6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void newButton1_Click(object sender, EventArgs e)
{
newButton1.CountClick += 1;
}

private void newButton2_Click(object sender, EventArgs e)
{
MessageBox.Show(newButton1.CountClick.ToString());
}

}
}



خب کدها هم به این صورت هستند که در بخش اول همونطور که میبیند از دکمه ارث بردن و یک خاصیت جدید با نام CountClick به دیگر خصوصیات دکمه اضافه کردن و تو کدنویسی بعدش که طریقه استفادش هست هر بار که رو خود دکمه کلیک کردم یکی به خاصیت CountClick اضافه کردم و بعدش هم با دکمه بعدی نشونش دادم. ولی اگر میخواستید خود کنترل جدید این کارو بکنه براتون و همیشه خودش یکی اضافه بکنه بدون اینکه ما بهش بگیم کافیه به این شکل کدتون رو تغییر بدید :


using System.Windows.Forms;

namespace WindowsFormsApplication6
{
public partial class NewButton : Button
{
public NewButton()
{
InitializeComponent();
}
public int CountClick { get; set; }

private void NewButton_Click(object sender, System.EventArgs e)
{
CountClick++;
}
}
}



موفق باشید.

REZAE2011
یک شنبه 06 آذر 1390, 18:05 عصر
سلام
با تشکر که راهنماییم کردید

من می خوام یک usercontrol درست کنم و در پروژه های دیگر استفاده کنم
اگه امکانش هست لطفا یک برنامه کامل قرار بدید
با تشکر

wolf_majid
یک شنبه 06 آذر 1390, 18:31 عصر
کد کلاس :

public partial class myBtn :Button
{
public myBtn()
{
InitializeComponent();
}

public int count
{
private set;
get;
}

protected override void OnClick(EventArgs e)
{
++count;
base.OnClick(e);
}

}


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

private void myBtn1_Click(object sender, EventArgs e)
{
this.Text = (sender as myBtn).count.ToString();
}