C# 当鼠标悬停在控件上时,在控件上添加轮廓(有时)
我正在尝试将帮助功能添加到我的一些控件中,但我很难按照自己的意愿选择帮助控件 这就是我想做的C# 当鼠标悬停在控件上时,在控件上添加轮廓(有时),c#,winforms,C#,Winforms,我正在尝试将帮助功能添加到我的一些控件中,但我很难按照自己的意愿选择帮助控件 这就是我想做的 单击“帮助”按钮 将光标更改为“帮助” 将鼠标悬停在控件上时,显示控件的蓝色轮廓 单击时,弹出帮助事件 目前我已经实现了excpet#3的所有功能,我可以执行鼠标向下事件,这样我的点击事件在选中时不会触发(正常工作,除了大纲)。有人知道我如何概述控件,以及单击时适合触发什么事件吗?部分答案。我从这里开始 假设:isInHelpMode是应用程序中的一个私有实例变量,当单击“帮助”按钮时,该变量被设置为t
isInHelpMode
是应用程序中的一个私有实例变量,当单击“帮助”按钮时,该变量被设置为true
应用程序中的某个地方:
myControl.MouseHover += (sender,eventArgs) =>
{
if(isInHelpMode)
{// draw blue outline
// insert your code to draw the blue outline
}
}
部分答案。我从这里开始
假设:isInHelpMode
是应用程序中的一个私有实例变量,当单击“帮助”按钮时,该变量被设置为true
应用程序中的某个地方:
myControl.MouseHover += (sender,eventArgs) =>
{
if(isInHelpMode)
{// draw blue outline
// insert your code to draw the blue outline
}
}
根据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 );
}
}
这假设您在帮助模式中有一个私有实例变量,
,当用户单击帮助按钮时,您正在设置该变量
当用户将鼠标焦点移出控件时,您可能还希望从控件中删除蓝色轮廓。为此,您可以使用MouseLeave事件:
private void Control_MouseLeave ( object sender, EventArgs e ) {
Invalidate ();
}
根据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 );
}
}
这假设您在帮助模式中有一个私有实例变量,
,当用户单击帮助按钮时,您正在设置该变量
当用户将鼠标焦点移出控件时,您可能还希望从控件中删除蓝色轮廓。为此,您可以使用MouseLeave事件:
private void Control_MouseLeave ( object sender, EventArgs e ) {
Invalidate ();
}
他什么都有,除了3。将鼠标悬停在控件上时,显示控件的蓝色轮廓。我假设当单击“帮助”按钮时,应用程序中的某个私有实例变量正在被切换。在我的代码中,我假设变量名为“isInHelpMode”,并且在单击“帮助”按钮时它被设置为true。他拥有除#3之外的所有内容。将鼠标悬停在控件上时,显示控件的蓝色轮廓。我假设当单击“帮助”按钮时,应用程序中的某个私有实例变量正在被切换。在我的代码中,我假设变量名为“isInHelpMode”,并且在单击“帮助”按钮时它被设置为true。Tim,感谢您添加了边框代码。考虑到问题的精确性,我假设OP会使用自己的绘图代码。显然,阿图尔的想法是相反的;谢谢我知道你的建议,只是想我会添加边界代码,以防将来有人发现这个问题,并且不知道如何绘制边界。蒂姆,你添加了边界代码,真是太好了。考虑到问题的精确性,我假设OP会使用自己的绘图代码。显然,阿图尔的想法是相反的;谢谢我知道你的建议,只是想我会添加边界代码,以防将来有人发现这个问题,并且不知道如何绘制边界。