【发布时间】:2011-11-09 15:29:45
【问题描述】:
我正在尝试向我的一些控件添加帮助功能,但我在选择控件以获取我想要的帮助时遇到了困难。
这就是我想做的。
- 点击帮助按钮
- 将光标更改为帮助
- 将鼠标悬停在控件上时显示控件的蓝色轮廓
- 点击时弹出帮助事件。
目前我已经实现了 excpet #3,我可以做一个 MouseDown 事件,这样我的点击事件在被选中时不会触发(工作正常,除了大纲)。有谁知道我如何概述控件以及单击时适合触发的事件?
【问题讨论】:
我正在尝试向我的一些控件添加帮助功能,但我在选择控件以获取我想要的帮助时遇到了困难。
这就是我想做的。
目前我已经实现了 excpet #3,我可以做一个 MouseDown 事件,这样我的点击事件在被选中时不会触发(工作正常,除了大纲)。有谁知道我如何概述控件以及单击时适合触发的事件?
【问题讨论】:
扩展 jberger 的答案,您可以使用控件的 MouseHover 事件在控件周围绘制一个矩形,类似于:
private void Control_MouseHover ( object sender, EventArgs e ) {
if ( inHelpMode ) {
var c = (Control)sender;
var rect = c.Bounds;
rect.Inflate(1,1);
var g = CreateGraphics ();
ControlPaint.DrawBorder ( g, rect, Color.Blue, ButtonBorderStyle.Solid );
}
}
这假设您有一个私有实例变量inHelpMode,当用户单击“帮助”按钮时您正在设置该变量。
当用户将鼠标的焦点从控件上移开时,您可能还希望从控件中移除蓝色轮廓。为此,您可以使用 MouseLeave 事件:
private void Control_MouseLeave ( object sender, EventArgs e ) {
Invalidate ();
}
【讨论】:
部分回答。这是我要开始的地方。
假设:isInHelpMode 是应用程序中的私有实例变量,当单击“帮助”按钮时将其设置为 true...
应用中的某处:
myControl.MouseHover += (sender,eventArgs) =>
{
if(isInHelpMode)
{// draw blue outline
// insert your code to draw the blue outline
}
}
【讨论】: