如何在另一个类中定义控件的类时查找它

时间:2011-04-26 21:27:50

标签: c# winforms

我正在使用包含按钮的2个类;我在主窗体中添加了按钮,现在我想在用户点击其中一个时执行某些操作。例如,如果用户单击class1中定义的按钮,则class1中定义的所有按钮的文本应更改为“class1”。实际上,我需要找到一个按钮类来改变该类中的其他变量。

2 个答案:

答案 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);
    }