Хотя в текущем принятом ответе нет ничего технически неправильного, я хотел предложить несколько иную альтернативу, которая, на мой взгляд, значительно облегчает управление и отслеживание происходящего здесь.
Этоподход хранит две локальные копии шрифта (один жирный, один нормальный).Затем вы можете просто поменять ссылки на шрифты в событиях мыши, и вам нужно беспокоиться только об утилизации шрифтов, когда вы избавляетесь от родительского класса (или когда вы меняете шрифт).
Кроме того, этодобавляет некоторую обработку ошибок, которую люди часто забывают при работе с событиями Fonts и Mouse (а именно try-catch создания Font, потому что он может завершиться ошибкой и отменить регистрацию обработчиков событий мыши при утилизации.
public class MyClass
{
Font _normalFont;
Font _boldFont;
public MyClass() : IDisposble
{
try
{
_normalFont = new Font("Arial", 9);
_boldFont = new Font("Arial", 9, FontStyle.Bold);
}
catch
{
//error handling
}
label1.MouseEnter += label1_MouseEnter;
label1.MouseLeave += label1_MouseLeave;
}
private void label1_MouseEnter(object sender, EventArgs e)
{
var font = ((Label)sender).Font;
((Label)sender).Font = new Font(font, FontStyle.Bold);
font.Dispose();
}
private void label1_MouseLeave(object sender, EventArgs e)
{
var font = ((Label)sender).Font;
((Label)sender).Font = new Font(font, FontStyle.Regular);
font.Dispose();
}
public void Dispose()
{
label1.MouseEnter -= label1_MouseEnter;
label1.MouseLeave -= label1_MouseLeave;
if(_normalFont != null)
{
_normalFont.Dispose();
}
if(_boldFont != null)
{
_boldFont.Dispose();
}
}
}