نمایش نتایج 1 تا 5 از 5

نام تاپیک: اضافه کردن چندین بار یک کنترل با یک بار new کردن

  1. #1
    کاربر دائمی آواتار MSYNK
    تاریخ عضویت
    مهر 1382
    پست
    195
    تشکر کردن
    3
    23 بار تشکر شده در 5 پست

    اضافه کردن چندین بار یک کنترل با یک بار new کردن

    با سلام
    برای اضافه کردن چند باره یک کنترلی که فقط یکبار new شده، به مشکل برخورد کردم.
    همونطور که میدونید اگه یک آبجکت فقط یکبار new شده باشه تنها یکبار میشه از این نمونه برای کاربردی که من میخوام، استفاده کرد و برای استفاده مجدد باید دوباره new بشه!
    که در صورت عدم نمونه سازی مجدد کنترل مورد نظر تنها به آخرین محل اضافه شده واقعا اضافه میشود.
    حال اگر امکان نمونه سازی مجدد وجود نداشته باشه، آیا راهی وجود داره؟
    البته با استفاده از Activator.CreateInstance با سختی بسیاری مشکلم حل میشه، چون باید تمام property ها رو دوباره ست کنیم!
    آیا راه حل ساده ای وجود داره؟

  2. #2
    مدیر بخش
    تاریخ عضویت
    شهریور 1383
    محل زندگی
    Tehran
    پست
    986
    تشکر کردن
    134
    255 بار تشکر شده در 152 پست
    سلام
    می تونی از آرایه ها استفاده کنی ولی احتمالا کارت اشتباه است
    در صفحه ات نمی تونی از Repeater استفاده کنی
    Kochol Game Engine
    http://www.kge3d.org



  3. #3
    کاربر دائمی آواتار MSYNK
    تاریخ عضویت
    مهر 1382
    پست
    195
    تشکر کردن
    3
    23 بار تشکر شده در 5 پست
    سلام
    مثل اینکه متوجه نشدید! اینقدرها هم ساده نیست.
    من دارم یه کنترلی مینویسم که یه property داره که یه کنترل میگیره و میخواد اونو به تعدادی خاص به یه آیتم اضافه کنه!
    حالا این کنترلی که توسط کاربر 1 بار فقط new شده (نمونه سازی شده) چطوری میشه چند بار اضافش کرد.
    چون اگر به ازای هر بار ضافه شدن new نشه، این کنترل فقط به آخرین نقطه اضافه شده توسط کد من، اضافه میشه!
    حالا روشی وجود نداره که بشه بدون اینکه کنترل رو به تعداد مورد نیاز new کنیم (چون در اینجا امکانش وجود نداره) کنترلها رو بشه اضافه کرد.(با تمام propertyهای ست شده توسط کاربر!)

  4. #4
    کاربر دائمی آواتار MSYNK
    تاریخ عضویت
    مهر 1382
    پست
    195
    تشکر کردن
    3
    23 بار تشکر شده در 5 پست
    راستی یادم رفت که بگم:
    اگه از Activator.CreateInstace استفاده کنیم(روشی که هم اکنون به عنوان تنها راه حل پیدا شده!) میشه فقط یه نمونه خالی (بدون propertyهای ست شده) ساخت، که کار ست کردن دوباره خواصی که توسط کاربر ست شده، بایستی توسط کد خودم انجام بشه! که کار بسیار سختیه، چون باید به ازای تمامی کنترلهای موجود کدهایی برای هندل کردن propertyها نوشته بشه!!!

  5. #5
    کاربر دائمی آواتار MSYNK
    تاریخ عضویت
    مهر 1382
    پست
    195
    تشکر کردن
    3
    23 بار تشکر شده در 5 پست
    سلام
    خودم یه راه خیلی بهتر براش پیدا کردم!
    اینجا میذارمش تا دیگران هم استفاده کنند.

    اگر کلاس مورد نظر اینترفیس ICloneable رو ایمپلیمنت کرده باشه، براحتی میشه با تابع Clone یه نمونه دیگه از نمونه مذبور ساخت.
    اما تقریبا هیچکدوم از کنترلهای Web و Html این اینترفیس رو ایمپلیمنت نکردند! چیکار باید کرد :
    بایستی کنترل خاص خودمونو بنویسیم که از کنترل مورد نظر مشتق شده باشه و ICloneable رو هم ایمپلیمنت بکنه!
    بعدش باید متد Clone رو هم براش بنویسیم!
    که تو این تابع برای اینکه تمام propertyها هم برگردونه بشه بایستی از تابع protected زیر رو که یه object برمیگردونه، استفاده بشه:
    ()MemberwiseClone
    به همین راحتی!!!

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •