我正在使用包含按钮的2个类;我在主窗体中添加了按钮,现在我想在用户点击其中一个时执行某些操作。例如,如果用户单击class1中定义的按钮,则class1中定义的所有按钮的文本应更改为“class1”。实际上,我需要找到一个按钮类来改变该类中的其他变量。
答案 0 :(得分:1)
在您的班级中,为按钮上的click事件分配事件处理程序,这样当您将它们添加到表单并单击它们时,事件处理程序将在您的类内部启动,以便您可以访问类属性。
否则,将类引用添加到按钮的Tag属性。
class Class1
{
public Button MyButton { get; set; }
public Class1()
{
MyButton = new Button();
MyButton.Click += new EventHandler(MyButton_Click);
}
void MyButton_Click(object sender, EventArgs e)
{
//Do code here
}
}
public partial class Form1 : Form
{
Class1 c1 = new Class1();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
c1.MyButton.Width = 100;
c1.MyButton.Height = 100;
c1.MyButton.Top = 0;
c1.MyButton.Left = 0;
this.Controls.Add(c1.MyButton);
}
OR
class Class1 : IButtonClass
{
public Button MyButton { get; set; }
public Class1()
{
MyButton = new Button();
MyButton.Tag = this;
}
public void DoSoemthing()
{
//Do something
}
}
interface IButtonClass
{
void DoSoemthing();
}
public partial class Form1 : Form
{
Class1 c1 = new Class1();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
c1.MyButton.Width = 100;
c1.MyButton.Height = 100;
c1.MyButton.Top = 0;
c1.MyButton.Left = 0;
this.Controls.Add(c1.MyButton);
c1.MyButton.Click += new EventHandler(MyButton_Click);
}
void MyButton_Click(object sender, EventArgs e)
{
IButtonClass c = ((Button)sender).Tag as IButtonClass;
c.DoSoemthing();
}
}
答案 1 :(得分:0)
在按钮点击事件中,您可以尝试
void button_Click(object sender, EventArgs e)
{
Console.WriteLine((sender as Button).Parent.Name);
}