PDA

View Full Version : چطور رویداد کلیک را برای دکمه اضافه کنم؟



S_VB.max
چهارشنبه 10 آبان 1391, 20:58 عصر
سلام

نام متد بصورت رشته در متغیر ذخیره شده می خوام مقدار این متغیر را به رویداد کلیک دکمه اضافه کنم
لطفا راهنمایی کنید چجوری اینکارو انجام بدم

private void Form1_Load(object sender, EventArgs e)
{
string str = "button3_Click";
button3.Click += new System.EventHandler(str);
}

private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show("Test");
}

مهرداد صفا
پنج شنبه 11 آبان 1391, 16:41 عصر
سلام
ابتدا با متود GetType تایپ شیئی که میخواهید متود آن را به رویداد کلیک اضافه کنید بگیرید. سپس با اجرای متود GetMethod میتوانید با استفاده از یک رشته به عنوان نام متود یک MethodInfo بگیرید و آن را Invoke کنید. به این صورت:

//in the name of god
//صل الله علی محمد و آله
using System;
using System.Windows.Forms;
using System.Reflection;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
string MethodName = "ButtonClick";
this.button1.Click += new EventHandler((sender, e) => this.GetType().GetMethod(MethodName).Invoke(this, new Object[2] { sender, e }));
}
public void ButtonClick(Object sender, EventArgs e)
{
MessageBox.Show("button clicked");
}
}
}

موفق باشید.