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

نام تاپیک: تبدیل نام کامپوننت به اسم تابع و اجرای ان

  1. #1

    تبدیل نام کامپوننت به اسم تابع و اجرای ان

    سلام دوستان راهی هست که تو رویداد مثلا یه button نام اون رو بگیرم و مثلا بهش یه "_doit" اضافه کنم تا بشه نام یه تابع و بگم که اون تابع رو اجرا کن مثلا
    void button2_doit()
    {
    MessageBox.Show("ok");
    }
    private void button2_Click(object sender, EventArgs e)
    {
    Button btn = (Button)sender;
    btn.Name + "_doit()";
    }

  2. #2
    کاربر دائمی آواتار system32
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    اصفهان
    سن
    35
    پست
    381

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    می شه بگید برای چی این کد رو می خواید شاید بشه راه ساده تری براش پیدا کرد.

  3. #3

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    ميخواي چي كار كني ؟

  4. #4

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    توضیحش طولانی فقط بدون خیلی نیاز دارم
    سعی می کنم توضیحش رو سر فرصت تایپ کنم بزار ماینجا. فعلا فقط مهم انجام این کاره. راههس سراغ ندارید؟

  5. #5
    VIP آواتار gwbasic
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    سن
    42
    پست
    982

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    می تونی این کارو انجام بدی ولی اگه بیشتر توضیح می دادی برای چی این کارو می خوای بکنی قطعا راه بهتری هست. به احتمال زیاد طراحیت ایراد داره ولی به هر حال به این صورت می تونی عمل کنی:
    فرض کلاسی که می خوای اون متد رو صدا بزنی اسمش هست MyClass و instance ای که روی اون می خوای متد مورد نظر ( مثلا MyMethod) رو صدا بزنی myClass هست کافیه کد زیر رو بنویسی:


    object obj = typeof(MyClass).InvokeMember("MyMethod", System.Reflection.BindingFlags.InvokeMethod, null myClass, null);

  6. #6

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    ببینید من یه برنامه دارم که توش 30-40 تا checkboxه . که هر کدوم رویداد checkedchange دارن
    حالا قراره به جای اون چک باکسها از button استفاده بشه پس من باید بیام بشینم دونه دونه بجاشون button بزارم و رویدادد checkedchange رو به click این نصبت بدم یا می تونم تو یه حلقه بگم خودش button ها رو ایجاد کنه و رو فرم بزاره و با توجه به اسم چک باکس رویداد checkedchange اون رو به button بدم .
    اینم بگم که اسن هر چک باکس با اسم buttonی که قراره جاشو بگیره یکیه .
    حالا پیشنهاد شکما چیه؟
    ممنون

  7. #7
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    کاری که توی رویداد checkedchange و کلیک انجام میشه یکسانه؟

  8. #8
    VIP آواتار gwbasic
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    سن
    42
    پست
    982

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    شما بهتره بگی که چیو می خوای پیاده سازی کنی؟ مگه داری بازی می نویسی که 30 - 40 تا Button باید داشته باشه.کاربر بیچاره باید تک تک این Button ها رو بدونه چیه ؟!؟!؟ یا اینکه پشت این Button ها یک منطق حاکمه؟
    بعید می دونم فرمی به این تعداد Button نیاز داشته باشه !!!

  9. #9

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    ممنون از جوابتون
    کاری که توی رویداد checkedchange و کلیک انجام میشه یکسانه؟
    بله کار یکسانه .
    بعید می دونم فرمی به این تعداد Button نیاز داشته باشه !!!
    بعید ندونید چون هست .کاربر هم به مشکل بر منیخره اصلا این کار برای user friendly شدن بیشتنر برنامس

  10. #10
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    نقل قول نوشته شده توسط djscsi مشاهده تاپیک
    ممنون از جوابتون
    بله کار یکسانه .
    بعید ندونید چون هست .کاربر هم به مشکل بر منیخره اصلا این کار برای user friendly شدن بیشتنر برنامس
    منم موافقم که در طراحی یک جایی را دچار اشکال شدید.
    در هر صورت اگر کار یکسان هست کلا روش این هست که یک کلاس button جدید درست کنید که از کلاس button ویندوز به ارث رفته باشد و در هر متدی را که دوست دارید خصوصی سازی کنید و بعد از این button جدید در فرم خودتان استفاده کنید.
    اگر اشکالی ندارد و ممکن هست یک عکسی از این فرم خودتان اینجا بگذارید تا ما هم ببنیم.

  11. #11
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    public Form2()
    {
    InitializeComponent();
    foreach (var b in this.Controls)
    {
    if (b is Button)
    {
    Button bb = (Button)b;
    bb.Click += new EventHandler(BtnClick);
    }
    }
    }

    private void BtnClick(object sender, EventArgs e)
    {
    MessageBox.Show(string.Format("You click on {0}", ((Button)sender).Name));
    }

    اینجوری هم می تونی بنویسی

  12. #12
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    با این شرایطی که شما می فرمایید شما با ظاهر چک باکس مشکل دارید و می خواید اون رو به صورت باتن نشون بدید چون میگید که کاری که توی رویداد کلیک باتن و checkedchange چک باکس انجام میشه یکسانه. توی چک باکس دو حالت داریم یا چک شده یا نشده ولی باتن که اینطور نیست. به فرض که شما کدها رو هم به باتن نسبت دادید تازه باید پیدا کنید که چند بار روش کلیک شده که شرطهای if یا else اعمال بشن و ... . همون چک باکس یه خاصیتی داره به اسم appearance اون رو روی حالت باتن قرار بدید.

  13. #13

    نقل قول: تبدیل نام کامپوننت به اسم تابع و اجرای ان

    1-ممنون maysamfthi جان ولی کد های نوشته شده در checkbox با button تداخل نشده یعنی اینکه checkbox در حالت انتخاب هست یا نه مهم نیوده (فقط دلیلش رو نپرسید که از بحث دور نشیم)
    2- ممنون linux جان ولی این کد هست فقط اینجا bb.Click += new EventHandler(BtnClick); باید اسم رویداد checkbox نوشته بشه و سوال منم همینه که میشه این کارو کرد یا نه

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

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