버튼을 클릭 할 때 해고되는 메소드에 두 개의 객체를 전달할 수 있어야합니다. 어떻게해야합니까?변수를 버튼 이벤트 메서드에 전달하는 방법은 무엇입니까?
지금까지 내가 변경된 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;
}
}
하지만 어떻게 사용할 것인가? 어떻게 든 CompArgs를 매개 변수로 사용하는 사용자 지정 이벤트 핸들러를 사용하기 위해 단추의 클릭 이벤트를 재정의 할 수 있습니까?
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++;
}
}
}
그리고 내가 그것을 필요로하는 이벤트 방법 :
private void btn_Click(object sender, CompArgs ca)
{
MessageBox.Show((string)ca.Typen().InvokeMember("getMyName",
BindingFlags.Default | BindingFlags.InvokeMethod,
null,
ca.Metode(),
null));
}
Button 클래스에서 파생하여 OnClick 메서드를 재정의 할 수 있습니다. 이 기술을 사용하여 답변을 추가했습니다. – Ian