如何在活动中调整“发件人”?

时间:2017-10-05 16:54:32

标签: c# events

我有一个代码可以使用randomLabel作为sender来触发事件。在这段代码中,我尝试调整sender的Font属性,但它似乎给出了编译错误。有什么方法可以解决这个问题吗?

    private void mainForm_Load(object sender, EventArgs e)
    {
        randomLabel.MouseEnter += RandomLabel_MouseEnter;
    }

    private void RandomLabel_MouseEnter(object sender, EventArgs e)
    {
        sender.Font = new Font(sender.Font, FontStyle.Bold);
    }

3 个答案:

答案 0 :(得分:3)

你可以"调整"发件人,但您必须将其强制转换为正确的类型,以便您可以访问其属性和方法。

private void RandomLabel_MouseEnter(object sender, EventArgs e)
{
    var sender2 = sender as Label;
    if (sender2 != null)
        sender2.Font = new Font(sender2.Font, FontStyle.Bold);
}

答案 1 :(得分:1)

您需要将sender转换为适当的控件。 E.g。

private void RandomLabel_MouseEnter(object sender, EventArgs e)
{
    Control control = sender as Control;
    if (sender != null)
    {
        control.Font = new Font(control.Font, FontStyle.Bold);
    }
    else
    {
        throw new InvalidArgumentException("sender");
    }
}

答案 2 :(得分:0)

sender属于object类型,没有Font属性。您需要先将其转换为适当的类型

假设它是一个标签..

((Label)sender).Font = new Font(((Label)sender).Font, FontStyle.Bold);

确保sender实际上是您预期使用isas运算符的类型可能是一个不错的选择。以防万一