PDA

View Full Version : سوال: نحوه کپی کامپیوننتی از یک فرم به فرم دیگر



kh1387
دوشنبه 23 شهریور 1388, 23:52 عصر
با سلام
چطوری میشه مثلا یه جعبه متن رو از یه فرم به فرم دیگه کپی کرد بطوریکه رویدادها و کد نویسی هم در فرم جدید کپی شه؟
البته در همین سایت یه جایی دیدم ولی هرچه سرچ کردم فایده نداشت:ناراحت:

kh1387
سه شنبه 24 شهریور 1388, 22:19 عصر
فکر نکنم خیلی سخت باشه
کسی نمی تونه راهنمایی کنه؟

Amir Oveisi
سه شنبه 24 شهریور 1388, 23:35 عصر
خوب کنترل رو کپی کنید، بعد رویداد های اونو هندل کنید و کد هاتون رو هم کپی کنید.

یه روش سریع تر :
از فایل FormName.Designer.cs برید اونجایی که کنترل شما تعریف شده، کدهاش رو کپی کنید و در فایل معادل برای فرم جدید paste کنید.
بعد برید کدهای رویداد هاش رو از فایل FormName.cs کپی کرده در فایل معادلش در فرم جدید paste کنید.

kh1387
چهارشنبه 25 شهریور 1388, 09:24 صبح
خوب کنترل رو کپی کنید، بعد رویداد های اونو هندل کنید و کد هاتون رو هم کپی کنید.

متشکرم
یعنی چی رویدادها رو هندل کنم؟:متفکر:

Amir Oveisi
چهارشنبه 25 شهریور 1388, 16:36 عصر
اینکه مشخص کنید یک رویداد وقتی اتفاق میفته ، کدوم متد اجرا بشه، در اصطلاح میگن هندل کردن رویداد (Event Handling) .
هر رویداد در اصل یک delegate هست. برای اینکه مشخص کنیم زمان رخ دادن یک رویداد کدوم متد اجرا بشه به شکل زیر عمل می کنیم ، مثلا:

this.button1.Click += new System.EventHandler(this.button1_Click);

در این کد یک delegate به اسم EventHandler رو New کردیم و متد مورد نظر خودمون رو به اون نسبت می دیم و این delegate رو به صف delegate های رویدادمون اضافه می کنیم (با عملگر =+ ). این کد به این معنی هست که وقتی رویداد کلیک button1 اتفاق افتاد، متد button1_click اجرا بشه (اینجوری رویداد هندل شد)

دقت کنید که همه این کار ها توسط خود IDE یه VS در زمان Design فرم انجام میشه که در فایل FormName.Designer.cs میتونین ببینین.

حالا شما اگر فقط کدهای مربوط به متد button1_click رو کپی کنید به یه فرم دیگه، شما هنوز رویداد کلیک button1 را در فرم جدید هندل نکردید. چون کد مورد نظر که در بالا گفته شد هنوز جایی نوشته نشده و معلوم نیست در صورت کلیک روی این button در این فرم کدوم متد باید اجرا بشه، ما متد رو داریم اما به برنامه اطلاع ندادیم که میخوایم این متد موقع کلیلک روی این button اجرا بشه. برای این کار یا باید خودتون اون کد رو بنویسید، یا اینکه روی button1 در فرم جدید دابل کلیک کنید تا اون خط کد بصورت اتوماتیک اضافه بشه.

دلیل این هم که در روش دوم گفتم کدهای مربوط به کنترل مورد نظرتون رو از فایل designer.cs کپی کنید همین نکته بود، چون با این کار شما کدهای مربوط به event handling اون کنترل رو هم کپی می کنید.

موفق باشید