PDA

View Full Version : تعریف ایونت برای کنترلهای ایجاد شده در زمان اجرا



میلاد قاضی پور
جمعه 02 مهر 1389, 22:13 عصر
سلام . من یک تابع دارم که یک تکسباکس برمیگردونه و قراره با زدن باتونهایی به فرم هر بار تکس باکس اضافه بشه . میخوام برای این تکسباکس ها ایونت بنویسم.



RichTextBox mainRichTextBox()
{
RichTextBox richtextbox = new RichTextBox() ;
richtextbox.Dock = DockStyle.Fill;
return richtextbox;
}

لازمه بگم با هر کلیک یک تب اضافه میشه و تکس باکس به اون تب اضافه میشه . پس مشکل نامگذاری وجود نداره چون کنترل درون تب مخصوص خودشه .
من چطوری یک ایونت کلی (برای تکس چنج) بنویسم که برای اون تابع ام(تکس باکس) در هر تب به صورت جدا عمل کنه ؟

یک روش اینه که یک تکس باکس بذارم روی فرم ولی نا مرئی باشه و کدهام رو توی ایونت اون بنویسم . بعد توی هر تب اون ایونت رو فراخوانی کنم اما sender رو برابر اون تابع ام قرار بدم . اما روش غیر اصولی ای هست نه ؟البته شایدم این روش عمل نکنه اصلا.

MoS4k1
جمعه 02 مهر 1389, 22:28 عصر
برای ایجاد یک رویداد در زمان اجرا برا textchange از کد زیر استفاده کن

textBox1.TextChanged += new EventHandler(textBox1_TextChanged);
دقت کن بعد از گذاشتن مساوی tab رو بزن تا رویداد ایجاد بشه

میلاد قاضی پور
جمعه 02 مهر 1389, 22:42 عصر
اینکه بله اما چجوری براش کد بنویسم ؟

میلاد قاضی پور
جمعه 02 مهر 1389, 23:04 عصر
فهمیدم . یک کلاس ایجاد کردم که از تکسباکس به ارث میبره . و رویداد تکسچنج رو اووراید کردم و توش کدهامو نوشتم . این طرف مقدار برگشتی اون تابع رو هم برابر کلاس خودم قرار دادم .

Reza_Yarahmadi
شنبه 03 مهر 1389, 07:44 صبح
به نظر من نيازي به يوزر كنترل نيست ، شما ميتونيد با استفاده از sender (در رويداد) و خاصيت tag (كنترلها) خيلي كارها انجام بديد.