我有一个代码可以使用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);
}
答案 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
实际上是您预期使用is
或as
运算符的类型可能是一个不错的选择。以防万一