我是新来的,这是我在这里的第一篇文章。如果我不遵循在 SO 上创建新问题的标准,我深表歉意。
在过去的几个小时里,我一直在绞尽脑汁尝试编写一个自定义类,它允许我向现有的 PictureBox 控件添加一个新属性,允许我为我的自定义属性设置一个颜色,这将导致设置当用户悬停控件时,带有所选颜色的边框。
以下是我到目前为止编写的代码:
[ProvideProperty("HoverColor", typeof(PictureBox))]
public class PictureBoxHover : Component, IExtenderProvider
{
private readonly Dictionary<IntPtr, Color> _hoverColors;
public PictureBoxHover()
{
_hoverColors = new Dictionary<IntPtr, Color>();
}
public bool CanExtend(object extendee)
{
return (extendee is PictureBox);
}
public Color GetHoverColor(PictureBox picb)
{
Color color;
if (_hoverColors.TryGetValue(picb.Handle, out color))
return color;
return Color.Empty;
}
public void SetHoverColor(PictureBox picb, Color color)
{
Color hoverColor;
_hoverColors[picb.Handle] = color;
}
}
上面的代码将自定义属性“HoverColor”添加到我的解决方案中的所有现有 PictureBox 控件 - 正如我需要的那样。我现在需要做的就是当用户将鼠标悬停在控件上时,以某种方式让它使用设置的颜色在我的 PictureBoxes 周围绘制一个边框。
我不希望我的类继承 PictureBox 或 Control 类,因为这需要将我的所有 PictureBoxes 从普通的 PictureBox 更改为我的自定义 PictureBox - 这就是为什么我想“附加”这个自定义属性和功能普通的 PictureBox 控件。
任何帮助将不胜感激 =)