使用单击事件访问同一类中的另一个变量

时间:2012-11-14 16:16:11

标签: c# labels

我有以下问题:

我想通过鼠标点击访问我班级中的变量。

我的班级:

public class Box
{

    public Label LabelDown = new Label();
    public byte SavedID;

    public Box(EventHandler InsideEvent)
    {

        LabelDown.Text = null;
        LabelDown.Size = new Size(96, 32);
        LabelDown.Visible = true;
        LabelDown.Click += new EventHandler(InsideEvent);

        SavedID = 0;

    }
}

现在,我使用:

在表单中创建了此类的Array
 Box[] myBox = new Box[5];

在初始化表单的代码中,我添加了这个:

  for (byte j = 0; j <= myBox.Length(); j++)
     {
         mybox = new Box(Box_goInside_Click)
         Controls.Add(Box[j].LabelDown);
     }

现在Click事件处理程序是:

   void Box_goInside_Click(object sender, EventArgs e)
     {

        //here i want to access the saved ID of MyBox that uses this Label
        Dosomething( whatever comes here. SavedID)

     }

我希望你能理解我的问题是什么......如果我使用base或其他任何东西,它将会转到Object,因为它只看到我的Label,但不是它的类Box的一部分。

1 个答案:

答案 0 :(得分:1)

你几乎没有选择:

  • 在每个Box的{​​{1}}属性中添加每个Tag的引用。
  • 处理Label类中的事件Click事件,然后使用Box本身调用处理程序替换原始发件人(Label)。

第一个解决方案:

Box

第二个解决方案:

public Box(EventHandler InsideEvent)
{
    LabelDown.Text = null;
    LabelDown.Size = new Size(96, 32);
    LabelDown.Visible = true;
    LabelDown.Click += new EventHandler(InsideEvent);
    LabelDown.Tag = this;

    SavedID = 0;
}

void Box_goInside_Click(object sender, EventArgs e)
{
    Box box = (Box)((Control)sender).Tag;

    // Do your stuff
}