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

نام تاپیک: صدا زدن evant button_click از exe ای دیگر

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #3

    نقل قول: صدا زدن evant button_click از exe ای دیگر

    سلام.
    چند تا راه داره
    1. شیوه جواد بازی تو برنامه دوم میتونید ایونت مثلا دکمه رو به صورت Public تعریف کنید و فایل exe برنامه رو به عنوان رفرنس اضافه کنید به پروژه و بقیه ماجرا
    2. از Reflection استفاده کنید. خود این هم به دو صورت امکان پذیره
    الف. ایونتی رو که تو روش 1 Public کردید رو به حالت قبل برگردونید (Private) و بعد یک تابع Public برای صدا کردن این ایونت بنویسید و از برنامه 1 این تابع رو صدا بزنید. لازمش اینه که از dotnet 4 استفاده کنید به خاطر استفاده از نوع dynamic (روش نیمه جواد)
    ب. کلا Public کردن ها رو بزارید کنار و از متد Invoke برای صدا زدن تابع استفاه کنید. حالت الف و ب تا یه قسمت کداشون مشترکه.

    1.
                var frm = new Form2();
    frm.button1_Click(null, null); //button1_Click is public in Form2 in assembly WindowsFormsApplication2


    2. من مسیر مستقیم دادم. برای دسترسی به مسیر برنامه دوم هر جور که خودتون میخواید عمل کنید
                // load dll or exe from path
    var app2Path = Path.GetFullPath("..\\..\\..\\WindowsFormsApplicat ion2\\bin\\Debug\\WindowsFormsApplication2.exe");
    var asm = Assembly.LoadFile(app2Path);

    // find Form2 class in assembly WindowsFormsApplication2
    var frmInApp2 = asm.GetTypes().FirstOrDefault(t => String.Compare(t.Name, "Form2", StringComparison.OrdinalIgnoreCase) == 0);
    if (frmInApp2 == null) return;

    ///////// الف //////////
    dynamic frm = Activator.CreateInstance(frmInApp2);
    frm.PerformClick();
    ///////// الف //////////


    ///////// ب //////////
    // find button2_Click event in Form2 in assembly WindowsFormsApplication2
    var clickEvent = frmInApp2.GetMethod("button2_Click", BindingFlags.NonPublic | BindingFlags.Instance);
    // param1 is classInstance and param2 is method paramerers
    clickEvent.Invoke(Activator.CreateInstance(frmInAp p2), new object[] { null, null });
    ///////// ب //////////


    البته یه پست هم زدید با این عنوان
    اجرای پروژه های دیگر در یک پروژه
    که برای نمایش یکی از فرمهای پروژه 2 از داخل پروژه 1، از روش ب استفاه کنید. خطوط زیر یه مقدار تغییر میکنن
                // find Form2 class in assembly WindowsFormsApplication2
    var frmInApp2 = asm.GetTypes().FirstOrDefault(t => String.Compare(t.Name, "Form2", StringComparison.OrdinalIgnoreCase) == 0 &&
    t.BaseType == typeof(Form));
    if (frmInApp2 == null) return;

    ///////// الف //////////
    var frm = (Form)Activator.CreateInstance(frmInApp2);
    frm.Show();
    ///////// الف //////////
    آخرین ویرایش به وسیله Himalaya : یک شنبه 06 اسفند 1391 در 13:29 عصر

تاپیک های مشابه

  1. صدا زدن فرم برنامه از درون برنامه اجرای دیگر
    نوشته شده توسط سعید صابری در بخش VB.NET
    پاسخ: 1
    آخرین پست: شنبه 19 فروردین 1391, 16:06 عصر
  2. صدا زدن dll از کلاس دیگر
    نوشته شده توسط mehrpars در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 6
    آخرین پست: چهارشنبه 29 اردیبهشت 1389, 00:15 صبح
  3. سوال: صدا زدن یک کلاس در کلاس دیگر
    نوشته شده توسط ramin149 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: دوشنبه 27 اردیبهشت 1389, 13:28 عصر
  4. صدا زدن یک متد داخل رویداد کلیک شیئ دیگر
    نوشته شده توسط elahe1364 در بخش C#‎‎
    پاسخ: 5
    آخرین پست: یک شنبه 13 بهمن 1387, 09:43 صبح
  5. صدا زدن یک متد از یک صفحه دیگر !
    نوشته شده توسط shahramasp در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: یک شنبه 03 تیر 1386, 09:02 صبح

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

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