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

نام تاپیک: با هشت خط کد برای کنترل های خود SmartTag بسازید

  1. #1
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    آستارا-تهران
    پست
    357

    با هشت خط کد برای کنترل های خود SmartTag بسازید

    با سلام
    شاید مقالاتی درباره چگونگی ساخت SmartTag خونده باشید.
    من هم چند روز پیش داشتم مقاله یکی دوستانم (حامد مصافی) که در این مورد بود رو می خوندم.
    پس از خوندن این مقاله و مقاله های موجود در این زمینه دیدم که میزان کدنویسی حدودا 150 خط برای افزودن SmartTag برای یک کنترل نیاز می باشد و دیدم که این کدنویسی بهینه نیست
    و برای هر کنترلی که می خواهیم براش SmartTag درست کنیم نیاز به تعریف کدهای تکراری و بدتر از اون تعریف Property های لازمه که برای هر کنترل متفاوت می باشد، می باشد.
    حتی با بررسی کدهای microsoft نیز دیدم که برای هر کنترلی که خواسته اسمارت تگ درست کنه همون کدهای تکراری رو در کلاس های مختلف ایجاد کرده مانند کلاس های TextBoxActionList و TextBoxDesigner و ComboBoxDesigner و ...
    البته این کلاس های به صورت internal هستند و داخل DLL به نام System.Design تعریف شده اند
    با این تفاسیر تصمیم گرفتم تا DLL بسازم که این کدنویسی رو به حداقل برسونه و هرکسی با این DLL به راحتی بتونه فقط با هشت خط کد برای کنترل های خود اسمارت تگ بسازه.
    برای ساخت این DLL راه حل رو در این دیدم که باید کلاسی بسازم که بتونه run time برای خودش property بسازه و بین این Property ها و کنترل مورد نظر تناظر برقرار کنه
    براین این منظور از اینترفیس ICustomTypeDescriptor استفاده کردم.
    براتون این DLL با سورسش رو میزارم
    روش استفاده ازش هم خیلی راحته
    کافیه این DLL و System.Design را به رفرنس هاتون اضافه کنید و با نوشتن 8 خط کد زیر در داخل کدهای کنترل تون ازش استفاده کنید.
    به فرض شما کلاسی نوشتید که از TextBox ارث بری کرده برای افزودن اسمارت تگ دلخواه کدهای زیر را اضافه کنید

    public
    classmsTextBoxSmartTag : mohsen_csharp.msSmartTagDesigner
    {
    publicoverridevoid SetPropertyNames()
    {
    this._propertyNames = newstring[] { "Text", "BackColor" };
    }
    }
    [DesignerAttribute(typeof(msTextBoxSmartTag))]
    publicclassMyTextBox:TextBox
    {
    public MyTextBox()
    {
    this.Text = "";
    }
    [DefaultValue("")]
    publicnewstring Text
    {
    get { returnbase.Text; }
    set { base.Text = value; }
    }
    }

    قسمت bold شده همون 8 خط مد نظر ماست
    اگه دوستان سوالی داشتند درخدمتیم و اگه مشکلی دیدن به بنده اطلاع دهند
    با تشکر محسن شاهد
    عکس های ضمیمه عکس های ضمیمه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله mohsen_csharp : شنبه 01 آبان 1389 در 01:03 صبح دلیل: نسخه جدیدتر قرار گرفت

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

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