PDA

View Full Version : مبتدی: سوال در مورد TreeView و وراثت



sobhan1990
یک شنبه 14 آذر 1389, 15:50 عصر
سلام
من میخوام که به تری ویو سفارشی داشته باشم. برای اینکار خودم یه کلاس تعریف کردم که از تری ویو ارث میبره و حالا میخوام برای رویداد کلیک شدن هر نود تری ویو یک دستور مشخص اجرا کنم.

میخوام که وفتی روی هر کدوم از نودهای تری ویو من کلیک شد،(یه دستور مشترک اجرا بشه؛) مثلا یه مسیج باکس، تکست نود کلیک شده رو نشون بده. و میخوام که اینو توی کلاسم تعریف کنم و اگر در زمان اجرا کاربر یه نود اضاف کرد هم کار کنه، یعنی نودها دینامیک اند و در زمان اجرا ایجاد میشند.

چکار باید بکنم؟ لطفا راهنمایی کنید.

hamid.shekasteh
یک شنبه 14 آذر 1389, 22:54 عصر
در کلاس ارث بری شده OnClick رو override کنید.وبعد دستورات مورد نظرتون رو بنویسید توی این رویداد.

hamid.shekasteh
دوشنبه 15 آذر 1389, 16:24 عصر
می تونید از OnAfterSelect هم استفاده کنید، من اون رو توصیه می کنم.
کد زیر به دردتون می خوره.



class Inherited : TreeView
{
protected override void OnClick(EventArgs e)
{
if(this.SelectedNode != null)
/ MessageBox.Show("OnClick \n Text : " + this.SelectedNode.Text);
base.OnClick(e);
}
protected override void OnAfterSelect(TreeViewEventArgs e)
{
if (this.SelectedNode != null)
MessageBox.Show("OnAfterSelect \n Text : " + this.SelectedNode.Text);

base.OnAfterSelect(e);
}
}

sobhan1990
جمعه 26 آذر 1389, 02:23 صبح
ممنون از دوستانی که راهنمایی کردن.
یه سوال دیگه دارم که همینجا میپرسم.
برای اینکه یکی از نودهای تری ویو به عنوان پیش فرض در حالت انتخاب قرار بدم باید چکار کنم؟ منظورم اینه که برنامه من ران میشه و تعدادی نود در یک تری ویو داره و من میخوام یکی از اینا موقع ران شدن برنامه انتخاب شده باشه.
بازم ممنون از راهنمایی

hamid.shekasteh
جمعه 26 آذر 1389, 09:21 صبح
سلام
اینو بنویسید:


inherited1.SelectedNode = inherited1.Nodes[2];


اما دقت کنید که اون عدد 2 در محوده باشه تا خطای argument out of range رو نده.