Tôi cần có khả năng truyền dọc hai đối tượng cho phương pháp được kích hoạt khi tôi nhấp vào nút. Làm thế nào để tôi làm điều này?Làm cách nào để chuyển các biến cho một phương thức sự kiện nút?
Cho đến nay tôi đã nhìn vào việc tạo ra một thay đổi EventArgs:
public class CompArgs : System.EventArgs
{
private object metode;
private Type typen;
public CompArgs(object m, Type t)
{
this.metode = m;
this.typen = t;
}
public object Metode()
{
return metode;
}
public Type Typen()
{
return typen;
}
}
Nhưng làm thế nào tôi sẽ sử dụng nó? Có thể bằng cách nào đó ghi đè lên các sự kiện nhấp chuột của nút để sử dụng một eventhandler tùy chỉnh, trong đó có CompArgs như một tham số?
private void button1_Click(object sender, EventArgs e)
{
Assembly assembly = Assembly.LoadFile(@"c:\components.dll");
int counter = 0;
foreach (Type type in assembly.GetTypes())
{
if (type.IsClass == true)
{
Button btn = new Button();
btn.Location = new Point(174 + (counter * 100),10);
btn.Size = new Size(95, 23);
btn.Name = type.Name;
btn.Text = type.Name;
btn.UseVisualStyleBackColor = true;
this.Controls.Add(btn);
object obj = Activator.CreateInstance(type);
//I need to pass on obj and type to the btn_Click
btn.Click += new eventHandler(btn_Click);
counter++;
}
}
}
Và sự kiện-phương pháp mà tôi cần nó:
private void btn_Click(object sender, CompArgs ca)
{
MessageBox.Show((string)ca.Typen().InvokeMember("getMyName",
BindingFlags.Default | BindingFlags.InvokeMethod,
null,
ca.Metode(),
null));
}
Bạn có thể ghi đè phương thức OnClick bằng cách lấy từ lớp Button. Đã thêm câu trả lời bằng kỹ thuật này. – Ian